当推入导航控制器时,视图控制器取消设置标签

时间:2013-01-30 17:05:02

标签: objective-c xcode tags viewcontroller navigationcontroller

......我想。 情况就是这样:

这是一个简单的方法,在视图控制器中,我们可以按下另一个视图中的按钮:

- (IBAction)actionNext:(UIButton *)sender {

    self.numeriUtiliListaViewController = [[ALCNumeriUtiliListaViewController alloc] init];
    [self.numeriUtiliListaViewController.view setTag:[sender tag]];
    [self.delegate vai:self.numeriUtiliListaViewController title:@"Numeri Utili"];
    }

委托的方法是:

- (void)vai:(id)view title:(NSString *)title
{
    ALCParentViewController *viewController = (ALCParentViewController *)view;  
    viewController.delegate = self;
    NSLog(@"tag: %d",[viewController.view tag]);

    [self.myNavigationController pushViewController:viewController animated:YES];
}

这个系统工作得很好,但唯一的事情是我在最后一个方法中记录的标签,这里打印正确,但在导航控制器加载的视图中,当我试图捕捉到的值时viewDidLoad,它是0。

有什么想法吗?

提前致谢

更新1 2013-01-30:

如果我尝试在导航控制器中推送的viewcontroller的viewWilAppear方法中打印标签,我会给出正确的值...为什么?我不知道

1 个答案:

答案 0 :(得分:2)

这里发生的事情是,在你的actionNext方法中,当你使用:self.numeriUtiliListaViewController.view设置viewController视图的标签时,只要你访问viewController的view属性,就会在viewController中调用viewDidLoad方法。因此,即使在执行setTag函数之前,viewDidLoad已经执行,并且它显示tag = 0.但是只有在实际视图出现时才会调用viewWillAppear / viewDidAppear方法,然后执行setTag,因此它显示正确值。 说得通?希望这有帮助