ios - awakeFromNib vs Outlets - 当我们调用 awakeFromNib 时设置 outlets 和 segues

标签 ios swift uiviewcontroller lifecycle awakefromnib

我试图了解 View Controller 的生命周期,但我读到了一些关于 awakeFromNib 的相互矛盾的陈述。文档说所有 socket 都应该在 awakeFromNib 中设置,但是 I see that it's not always true . awakeFromNibprepareForSegue 之间的调用顺序是什么以及导出何时可用?

最佳答案

您的 View Controller 及其 View 层次结构在运行时从单独的 nib 文件加载。 View 层次结构的导出在加载 View 层次结构之前不会连接,这发生在 View Controller 加载之后。 (我已经对此进行了更深入的解释 in this answer 。)

假设您在导航 Controller 中有一个“主” View Controller 。主视图 Controller 执行 segue 以推送“详细信息” View Controller 。这是事件的顺序:

  1. 详细 View Controller 从其 Nib 加载。如果 Storyboard场景包含其他顶级对象,也会加载这些对象。

  2. 详细 View Controller 接收 awakeFromNib:详细 View Controller 到场景中其他顶级对象的导出已连接,但 View 层次结构的导出未连接。

    <
  3. 主视图 Controller 接收 prepareForSegue,segue 指向详细 View Controller 。

  4. Segue 要求导航 Controller 推送详细信息 View Controller 。

  5. 导航 Controller 向详细 View Controller 请求其 View ,以添加到导航 Controller 的 View 层次结构中。

  6. 详细 View Controller 加载其 View 层次结构 nib。这会将详细 View Controller 的导出连接到它的 View 层次结构。

  7. View 层次结构中的所有对象都收到 awakeFromNib

  8. 详细 View Controller 接收 viewDidLoad

关于ios - awakeFromNib vs Outlets - 当我们调用 awakeFromNib 时设置 outlets 和 segues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147871/

相关文章:

swift - Storyboard或从 ViewController 到 Tabbar Controller 的 segue

Swift - 远离模态视图没有正确破坏 ViewController

iphone - 创建用于播放 RTSP 流媒体视频的应用程序

ios - 如何删除推送通知 API

iphone - Sprite 以抛物线方式从position(x, y)跳到position(width-x, y)

ios - 无法从 WebKit 正确使用 https ://vintage. myetherwallet.com

ios - 尝试给我们 UIAlertController 打分

iphone - 导航栏动画变白

ios - 如何获取当前显示的 UIViewController 不在 AppDelegate 中?

ios - 如何显示下面的UIView?