【发布时间】:2014-08-25 08:35:21
【问题描述】:
在我的测试项目中,我在导航控制器中嵌入了一个 ViewController 和一个 TableViewController 控制器。 ViewController 是主视图,用户可以导航到 TableViewController,然后返回 ViewController。
当我从 ViewContoller>TableViewController 去时,我正在使用“推送”segue,当用户希望返回到 ViewController 时,TableViewController 会使用[self dismissViewControllerAnimated:YES completion:nil]; 关闭。
在 ViewController 中,我有一个按钮可以更改标签上的文本:
-(IBAction)onButtonPress:(id)sender {
_myLabel.text = @"New Label Text";
}
当导航到 TableView,然后返回 ViewController,_myLabel.text 中的更改已丢失,原始文本已恢复。在视图之间导航时确保保留 UI 数据的最佳方法是什么?在这个项目中我可能只有一个标签,但在某些时候我会有很多 UI 元素,例如,当用户离开然后返回时需要保持页面加载的 WebView。
您认为最好的实现方法是什么?
感谢您的宝贵时间。
【问题讨论】:
-
使用块或委托和协议。
-
但是一旦 UI 加载,它的状态就永远不会改变,直到你改变它们。如果我错了,那么任何人都可以纠正它。
-
正如@Prince 所说是正确的,如果 Viewcontrolelr 是 rootViewController(TableVC 是孩子或呈现为不同的)但根 ViewController 的数据应该保留。
-
您可能在 ViewDidLoad 或 DidAppear 被处理,检查一下。
-
导航控制器是否有可能成为根而不是视图控制器?我刚刚又做了一个测试项目,和上面完全一样,只是我没有使用导航控制器,并且在导航到第二个视图时使用了“模态”设置。这一次,数据在导航后保留在标签中(效果很好)。
标签: ios objective-c iphone xcode uiviewcontroller