0

基本上,我有一个 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的函数之前被调用。但是,似乎setDetailsMyTabBarController的函数是在 FirstViewController 的函数之后viewDidLoad调用的。

这怎么可能 ?我在这里做错了什么吗?

谢谢 !

4

1 回答 1

1

尝试将代码放入firstViewControllerinviewDidAppear方法而不是viewDidLoad

快乐编码:)

对于这两者的区别,只需查看 Apple 开发者网站上的相关文档即可:)

在加载视图时正式viewDidLoad调用一次

viewDidAppear当视图即将出现在屏幕上时调用:)

快乐编码:)

于 2012-08-07T10:06:49.940 回答