【问题标题】:View controller unset his tag when pushed into nevigation controller视图控制器在推入导航控制器时取消设置他的标签
【发布时间】:2013-01-30 17:05:01
【问题描述】:

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

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

- (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。

有什么想法吗?

提前致谢

2013-01-30 更新 1:

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

【问题讨论】:

    标签: objective-c xcode tags viewcontroller navigationcontroller


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2014-01-11
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多