设置“详细”视图控制器的最佳方法是什么?假设我有一个带有 UILabel 的非常简单的 DetailViewController。它有一个 API(这是演示这个概念的伪代码):
UpdateLabel(string text)
{
this.label.text=text;
}
所以在父 ViewController 中,我有:
PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
{
base.PrepareForSegue(segue, sender);
DetaiViewController.UpdateLabel("Hello");
}
但是,由于 ViewDidLoad 尚未被调用,因此在详细视图控制器中“标签”为空,因此崩溃。我知道这可以通过在 UpdateLabel 中添加一些类似的东西来解决
UpdateLabel(string text)
{
this.View.Hidden=this.View.Hidden; // To force view to load
this.label.text=text;
}
但这似乎很hacky。
或者,我可以将 UpdateLabel 更改为仅存储字符串:
UpdateLabel(string text)
{
this.textString.text=text;
}
然后在 ViewDidLoad 中初始化标签:
public override void ViewDidLoad()
{
base.ViewDidLoad();
this.label.text=this.textString;
}
但是如果我希望父控制器稍后修改标签怎么办?调用 UpdateLabel 只会更新 textString 变量并且不会更改标签。
什么是正确的方法?