我有以下问题。
这是我的代码:
GTSearchViewController* vc = [[GTSearchViewController alloc] initWithNibName:@"GTSearchViewController"
bundle:nil];
vc.headlineLabel.text = [[self.categorieArray objectAtIndex:indexPath.row] valueForKey:@"categoryName"];
[AppDelegate().centerViewController pushViewController:vc
animated:YES];
正如您所看到的,我尝试使用xib文件推送新的ViewController,并希望在我的headlineLabel
中从我的数组self.categorieArray
设置一个字符串。但是当SearchController
被推动时,一切都很完美,但我的headlineLabel
总是nil
。
我不明白为什么,我认为我不需要在SearchController
中调用“alloc-init”,因为一切都是使用Interface Builder构建的?
答案 0 :(得分:4)
您的问题是在实际加载之前更改UI。
您应该在视图控制器的ViewDidLoad中设置标签文本(在加载视图后调用它)。
在SearchViewController类中创建NSString属性,并在初始化后立即设置它。
vc.headlineText = [[self.categorieArray objectAtIndex:indexPath.row] valueForKey:@"categoryName"];
然后在SearchViewController中,您应该覆盖viewDidLoad方法:
- (void) viewDidLoad{
[super viewDidLoad];
self.headlineLabel.text = self.headlineText;
}
P.S。当然,我假设您已正确设置headlineLabel插座(来自Interface Builder)。