objective-c - View Controller 在插入导航 Controller 时取消设置他的标签

标签 objective-c xcode tags viewcontroller navigationcontroller

...我猜。 情况是这样的:

这里有一个简单的方法,在 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/

相关文章:

sql - 标签数据库设计

ios - 获取给出属性名称的属性类

ios - UIBarButtonSystemItem 信息和统计

iphone - Objective-C - 将变量保留在 .h 或 .m 中 - 有什么区别吗?

ios - 无法打开文件“Cartfile”,因为没有这样的文件

ios - UIView 与 UITableView 和 UIGestureRecognizer 突然停止手势识别

php - 如何使用 PHP Ajax 编辑 Bootstrap Tokenfield 标签数据?

objective-c - NSFileManager setUbiquitous:是,我的文件陷入了困境!为什么?

xcode - 升级到 Xcode 4.5 后 theos 项目出现错误 "ld terminated with signal 6"

svn - 是否有用于在 Hudson 中列出 subversion 标签的插件?