......我想。 情况就是这样:
这是一个简单的方法,在视图控制器中,我们可以按下另一个视图中的按钮:
- (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方法中打印标签,我会给出正确的值...为什么?我不知道
答案 0 :(得分:2)
这里发生的事情是,在你的actionNext方法中,当你使用:self.numeriUtiliListaViewController.view设置viewController视图的标签时,只要你访问viewController的view属性,就会在viewController中调用viewDidLoad方法。因此,即使在执行setTag函数之前,viewDidLoad已经执行,并且它显示tag = 0.但是只有在实际视图出现时才会调用viewWillAppear / viewDidAppear方法,然后执行setTag,因此它显示正确值。 说得通?希望这有帮助