...我猜。 情况是这样的:
这里有一个简单的方法,在 View Controller 中,我们可以按下按钮进入另一个 View :
- (IBAction)actionNext:(UIButton *)sender {
self.numeriUtiliListaViewController = [[ALCNumeriUtiliListaViewController alloc] init];
[self.numeriUtiliListaViewController.view setTag:[sender tag]];
[self.delegate vai:self.numeriUtiliListaViewController title:@"Numeri Utili"];
}
委托(delegate)的方法是:
- (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];
}
这个系统运行良好,但唯一的事情是我在最后一个方法中登录的标签,这里它打印正确,但是在导航 Controller 加载的 View 中,当我 try catch 中的值时viewDidLoad,它是0。
有什么想法吗?
提前致谢
更新 1 2013-01-30:
如果我尝试在导航 Controller 中推送的 View Controller 的 viewWilAppear 方法中打印标签,我将给出正确的值...为什么?我不知道
最佳答案
这里发生的事情是,在你的actionNext方法中,当你使用self.numeriUtiliListaViewController.view设置viewController View 的标签时,一旦你访问viewController的 View 属性,viewDidLoad方法就会在viewController中被调用。因此,即使在执行 setTag 函数之前,viewDidLoad 已经被执行,并且显示 tag = 0。但是只有当实际 View 出现时才会调用 viewWillAppear/viewDidAppear 方法,此时 setTag 已经被执行,所以它显示正确值(value)。 说得通?希望这有帮助
关于objective-c - View Controller 在插入导航 Controller 时取消设置他的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14609614/