lufei's Studio.

iOS Push & Modal Navigation

字数统计: 347阅读时长: 1 min
2020/07/07 Share

最近项目中开始集成一些模块化的页面,所以如何「恰当」地实现页面跳转成为了一个需要特别关心的问题,在了解一些后,在这里做个小小的总结。

Push Navigation

这是 iOS 中最常见的 Navigation 机制。

将一个 VC Push 到 Navigation 栈中,由导航栏统一管理。内存管理也由编译器来负责。

简单易用,满足了大部分情况下的页面跳转需求。

主要 api:

Modal Navigation

模态 Navigation 是指「一个 VC,以模态形式呈现另一个 VC 」。 VC 不必是导航控制器的一部分,以模态呈现的 VC 通常被视为呈现(父)VC 的“子代”。模态呈现的 VC 通常没有任何导航栏或标签栏。(父) VC 还负责消除其创建和呈现的模态 VC(内存管理由父 VC 负责)。

主要 api:

拦截导航栏返回事件

两种方案:

‘whose view is not in the window hierarchy!’ error

Modal Navigation 偶尔会引发上面这个错误。

大部分情况下都是因为当前 controller 的 view 还没有加入当前的 window hierarchy,可以在 ViewDidAppear 方法中再做 Modal Navigation

参考

Pushing, Popping, Presenting, & Dismissing ViewControllers

Understanding Navigation in iOS

你真的了解iOS中控制器的present和dismiss吗?

CATALOG
  1. 1. Push Navigation
  2. 2. Modal Navigation
  3. 3. 拦截导航栏返回事件
  4. 4. ‘whose view is not in the window hierarchy!’ error
  5. 5. 参考