基本上,我有一个TabBarController和一些附加到这个控制器的子视图。 TabBarController有一些我想在子视图中访问的属性。
这就是我所拥有的:
MyTabBarController的.m
-(void)setDetails:(id)sender
{
self.myVariable = @"This is a test";
NSLog(@"Here I set my variable");
}
- (void)viewDidLoad
{
NSLog(@"[LOAD] My Tab Bar Controller");
[self setDetails:nil];
}
第一个subView的.m
- (void)viewDidLoad
{
NSLog(@"[LOAD] FirstViewController");
MyTabBarController *myTBC = (MyTabBarController *)self.tabBarController;
self.headerName.text = myTBC.myViariable; // Here I just set the UILabel's text
NSLog(@"Header name = %@", self.headerName);
}
以下是我在日志中的内容:
2012-08-07 11:43:23.001 MyFirstproject[23632:15203] [LOAD] My Tab Bar Controller
2012-08-07 11:43:23.012 MyFirstproject[23632:15203] [LOAD] FirstViewController
2012-08-07 11:43:23.072 MyFirstproject[23751:15203] Header name = (null)
2012-08-07 11:43:23.116 MyFirstproject[23751:15203] Here I set my variable
我的问题是:正如我在日志中看到的那样,MyTabBarController的viewDidLoad
函数在FirstViewController之前被称为 。但是,似乎MyTabBarController的函数setDetails
在之后被称为在FirstViewController的函数viewDidLoad
之后。
这怎么可能?我在这里做错了吗?
谢谢!
答案 0 :(得分:1)
尝试将firstViewController
的代码放入viewDidAppear
方法而不是viewDidLoad
快乐编码:)
对于这两者之间的区别,只需在Apple的开发者网站上查看有关它的文档:)
在加载视图时正式viewDidLoad
调用一次
当视图即将出现在屏幕上时viewDidAppear
调用:)
快乐编码:)