在 iOS 8.3 中查看生命周期

View lifecycle in iOS 8.3

在我的应用程序中,许多视图控制器都有一个包含某种 "dashboard" 的容器视图,在整个应用程序中共享多个按钮和标签。 在两个视图控制器之间进行 segueing 时,通常发生的情况是:

1) the new view controller's viewDidLoad is called;
2) the new view controller's viewWillAppear is called;
3) the dashboard's viewDidLoad is called (there is an automatic segue to it, since it's inside a Container View);
4) the dashboard's viewWillAppear is called;

现在,在仪表板的 viewWillAppear 方法中,我对不同的标签进行了一些格式化(更改它们的文本和颜色)。但是,在 iOS 8.3 中这似乎没有效果。例如,我执行以下操作来更改按钮的标签:

self.myButton.titleLabel.text = @"myText";

然而,在这条指令执行之后,做一个

(lldb) po self.myButton.titleLabel.text

在调试器提示符下,将输出该按钮标签的先前内容(来自故事板)而不是 "myText"。不用说,在 iOS 8.2(包括 iOS 7)之前一切正常。

所以我的问题是:iOS 8.3 中的 view/segue 生命周期级别是否发生了任何变化?

您必须使用 [myButton setTitle:forState:] 来更改按钮的标题。如果以前成功,那纯属运气。