【问题标题】:Back button in UINavigationControllerUINavigationController 中的后退按钮
【发布时间】:2012-08-17 17:40:52
【问题描述】:

所以,我很清楚,当在嵌入UINavigationControllers 的类中按下后退按钮时,会调用前一个视图的viewDidAppear() 方法。但是,我需要调用 viewDidLoad() 方法,就像将 segue 推送到场景中一样。有没有可能的方法来做到这一点?也许通过修改按下后退按钮时调用的方法?按下后退按钮时调用的方法是什么?谢谢。

【问题讨论】:

  • 你为什么不把你需要调用的代码移动到viewDidAppear?
  • 如果我这样做,我会弄乱执行操作的顺序,并且我的视图加载不正确:(

标签: iphone objective-c ios xcode4 uinavigationcontroller


【解决方案1】:

首先 viewWillAppear 然后 viewDidAppear 在推回时被调用。对于视图的延迟加载,最好在 viewWillAppear 中添加/操作 UI 子视图,并使其在 viewDidDisappear 中将视图设置为零以进行内存管理。

【讨论】:

  • 除非您有充分的理由,否则我建议您不要在 viewDidDisappear 中卸载您的视图。很多时候,这将导致毫无意义的设置/拆除视图,该视图可能会愉快地保留在内存中而不会引起问题——我认为您的建议是过早优化的一个很好的例子。而且毫无意义地乱扔东西对设备的电池寿命没有好处(理论上)。
  • 感谢 Occulus,肯定有一些观点在记忆中不会造成任何问题。
【解决方案2】:

viewDidLoad 仅在视图加载时调用。正在加载/卸载的视图和它们出现/消失的区别:视图可以在不卸载的情况下消失。通常 iOS 不会卸载视图,即使它被另一个视图隐藏/替换,除非发生内存不足的情况。

永远不要自己调用viewDidLoad 等(子类覆盖中的super 调用除外)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2012-12-24
    相关资源
    最近更新 更多