访问子ViewController中的TabBarController变量

时间:2012-08-07 09:49:18

标签: iphone objective-c ios xcode uitabbarcontroller

基本上,我有一个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之后。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试将firstViewController的代码放入viewDidAppear方法而不是viewDidLoad

快乐编码:)

对于这两者之间的区别,只需在Apple的开发者网站上查看有关它的文档:)

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

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

快乐编码:)