2012-01-21 44 views
0

我在xib中的视图中都有一个UISegmentedControl。在我的应用程序委托中,我使用initWithNibName创建控制器,它是xib的文件所有者:然后将其包装在导航控制器(UINavigationController initWithRootViewController)中。UISegmentedControl setImage:或setText:无法正常工作

然后我尝试将分段控制这样内设置任一图像或元素的标题:

[self.viewController.segmentControl setImage: [UIImage imageNamed:@"some_image.png"]forSegmentAtIndex: 3]; 
[self.viewController.segmentControl setTitle: @"some text" forSegmentAtIndex: 2]; 

分段控制出现但setImage:和的setTitle:由不具有效果。 前两个单元格分别表示第一个和第二个单元格,它们是在IB内初始拖放时分配的默认值。

segmentControl是一个IBOutlet,我确认它已连接到分段控件。

为什么它不起作用?

我可以在IB中设置图像或文本,它可以工作,但我想了解为什么我不能以编程方式设置它们。

(分段控制有6个索引)。

+1

你有没有NSLog的'self.viewController.segmentControl'确认(最重要的位置),这不是零? – smparkes

+0

它没有被创建 - 我认为当initWithNibName:被调用时,会在nib中创建一切吗?如果我在代表中检查它时是否为零,那么它是如何显示的? – Gruntcakes

+0

不知道它没有被创造,因为没有设置伊娃/财产。我不能真正帮助IB的东西;我不使用它,所以我忘记了如何使用它... – smparkes

回答

0

为什么要在应用程序委托中设置分段控件?你不应该在文件的所有者(viewController)中调整它的属性吗?我可能会在viewController的viewDidLoad方法中执行此操作,或者因为您仍然使用IB,只需在其中(在您的XIB中)设置图像和标题属性即可。

0

使用此代码

[segmentControl setImage: [UIImage imageNamed:@"some_image.png"]forSegmentAtIndex: 3]; 
[segmentControl setTitle: @"some text" forSegmentAtIndex: 2];