2

... 我猜。这是这种情况:

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

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

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

4

1 回答 1

2

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

于 2013-01-30T19:11:40.713 回答