将视图控制器推入导航控制器
Posted
技术标签:
【中文标题】将视图控制器推入导航控制器【英文标题】:Push View Controller into Navigation Controller 【发布时间】:2009-06-30 20:49:40 【问题描述】:有时当我将 ViewController 推入导航控制器时, 视图控制器的 viewDidLoad() 方法没有被调用。 这导致我的应用程序崩溃。我将不胜感激。
我忘了提到我在将视图推送到导航控制器之前从笔尖加载视图。
谢谢, 莎拉
【问题讨论】:
【参考方案1】:viewDidLoad
方法仅在第一次从 Nib 文件加载视图时调用。如果视图已经加载并且您再次推送视图,它将不会再次触发。
根据您要执行的操作,您可能需要改用 viewWillAppear
或 viewDidAppear
。
【讨论】:
viewDidLoad 在 ViewController 被初始化时也会被调用,即使根本没有涉及 XIB。 viewDidLoad 在 loadView 之后立即调用,在第一次访问 .view 属性时调用。 loadView 的默认实现会加载一个 nib 文件(如果您在初始化视图控制器时提供了一个 nib 文件名),但您可以覆盖 loadView 以在代码中创建视图。【参考方案2】:一旦视图被加载并添加到控制器的堆栈中,您将不会再看到它被调用。您需要将视图从堆栈中弹出并再次推送以查看它。您始终可以放心,每次返回视图时都会调用 viewWillAppear。这使您可以进行任何可能按顺序进行的内务管理(我认为这是目标)。
【讨论】:
这是不正确的——viewDidLoad 只被调用一次(除非视图稍后被释放以释放内存)。 Diedrik Hoogenboom 说得对。 这正是我写的。我说它被调用一次,当你循环回到视图时,你需要实现 viewWillAppear 来做事情。请阅读帖子。以上是关于将视图控制器推入导航控制器的主要内容,如果未能解决你的问题,请参考以下文章