使用viewWillAppear和viewWillDisappear了解UINavigationController中的属性

时间:2015-06-16 07:29:18

标签: ios objective-c uiviewcontroller uinavigationcontroller

我有一个UINavigationController我可以重复使用导航控制器推送相互循环的照片和评论。

在我的MyViewController.h

@property (nonatomic, strong) NSMutableAttributedString *pLabel;

在我的MyViewController.m

- (void) viewWillDisappear:(BOOL)animated
{
    if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound)
    {
        // A photo function gets the right label
        _pLabel = // function gets correct label I want
    }

    [super viewWillDisappear:animated];
}

- (void)viewWillAppear:(BOOL)animated
{
    _pLabel = // is already set
}

我点击一次MyViewController并设置mvc.pLabel = @"1st one"。然后我单击一个按钮来创建一个新的MyViewController并设置mvc.pLabel = @"2nd";

然后当我点击后退按钮viewWillDisappear被调用时,我的字典设置pLabel = @"1st"。然后viewWillAppear运行以显示第一个导航控制器视图,pLabel = @“2nd”;

为什么viewWillDisappear没有保存pLabel?

感谢。

1 个答案:

答案 0 :(得分:0)

您的属性绑定到MyViewController的一个实例,因此当您弹出第二个视图控制器时,您将设置将消失的MyViewController的属性,而不是那个将变为可见的属性

如果您没有保留对MyViewController消失的引用,则没有理由更新其中一个标签,因为您下次可能会显示MyViewController的全新实例。