【问题标题】:IOS/Storyboard: When is it really necessary to embed a view controller in a navigation controllerIOS/Storyboard:什么时候真正需要在导航控制器中嵌入视图控制器
【发布时间】:2017-05-24 23:53:33
【问题描述】:

我有一个包含多个视图控制器的项目。因为有时我需要在导航栏中放置 Done,或者视图控制器以模态方式启动并且需要在导航栏中使用取消按钮,所以我养成了将视图控制器嵌入到导航栏中的习惯。

但是,在构建应用程序时,我注意到我收到很多关于导航控制器的警告:

unreachable because it has no entry points, and no identifier for runtime access via -[UIStoryboard instantiateViewControllerWithIdentifier:].

到目前为止,我发现在这些情况下,通常存在从另一个视图控制器直接到相关视图控制器的 segue。并且通常在 VC 中没有完成按钮或其他条形按钮项。

删除其中一些“无法访问”的导航控制器后,我注意到它似乎没有任何影响。 VC 中仍然有一个后退按钮,并且功能相同。似乎编译器会自动在这些 VC 中放置一个带有后退按钮的导航栏,并且它们的行为与嵌入导航控制器中的行为相同。

我的直接问题是我是否可以安全地删除这些无法访问的导航栏控制器。我更广泛的问题是:对于何时应将 VC 嵌入 Nav 是否有规则或原则,例如,当您想要插入除 Back 以外的条形按钮时,以及何时不需要使用 Nav。

感谢您的任何建议。

【问题讨论】:

  • 如果您的导航控制器无法访问,因为您直接连接到视图控制器,那么导航控制器不会做任何事情。只有当您实际使用导航控制器时,您的视图控制器才会嵌入到导航控制器中。
  • 如果您只需要一个后退按钮,是否有任何理由使用导航控制器而不是直接使用视图控制器?或者你应该在什么条件下使用导航控制器?

标签: ios uinavigationcontroller


【解决方案1】:

简而言之,导航控制器允许开发人员管理视图而无需输入太多代码。例如

使用导航控制器可以做到

navigationController?.pushViewController(yourViewController, animated: true) 或

navigationController?.popViewController(animated: true)

没有实现 navController 你只能这样做

present(yourViewController, animated: true, completion: nil) 或

self.dismiss(动画:真,完成:无)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2014-10-09
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    相关资源
    最近更新 更多