iOS - Navigationcontroller 与带有导航栏的 Viewcontroller

Posted

技术标签:

【中文标题】iOS - Navigationcontroller 与带有导航栏的 Viewcontroller【英文标题】:iOS - Navigationcontroller vs Viewcontroller with a navigation bar 【发布时间】:2017-10-31 12:52:35 【问题描述】:

我是 ios 新手,不太了解 Navigationcontroller 与使用带有导航栏的 Viewcontroller 相比的好处。我曾尝试对此进行研究,但我能找到的最佳答案来自 3 年前的此链接“https://www.reddit.com/r/swift/comments/2krv5p/why_would_you_use_a_navigation_controller_over_a/”,总而言之,这是由于 iOS 首次出现时难以实现这一点。然后它继续解释说它仍然有一些当前的用途,因为您必须使用导航栏编写自己的 segue,而导航控制器会自动完成。

快进到今天,我们可以简单地按住控制按钮并创建一个转场,而无需输入代码。因此,我试图弄清楚导航控制器与带有导航栏的视图控制器的优点是什么。因为除了这个小小的好处之外,我觉得导航控制器不是那么直观和干净,因为它创建了一个“未使用”的控制器。

我还想弄清楚如果我决定增加页面数量,哪种方式会给我更大的灵活性,因为我意识到导航栏的高度和 navigatiocontroller 的栏有 2 个不同的高度。 (这对我来说很奇怪,我不明白为什么会这样。)

谢谢。

【问题讨论】:

【参考方案1】:

不要将UINavigationController 与视觉“导航栏”混淆。

UINavigationController 为您处理视图控制器管理...您将 VC 推送、推送、推送到堆栈上,然后(通常使用导航栏中的内置后退按钮)弹出、弹出、弹出它们退出堆栈。控制器还为您处理设置标题。这是一种非常常见的应用程序“流程”,是用户非常熟悉(且舒适)的 UI/UX。

如果您不想使用推送/弹出导航,可以在您的视图中添加一个“导航栏”,如果您真的想要的话。当然,就此而言,您可以在顶部添加 any 视图 - 它不必是 UINavigationBar 对象。事实上,添加导航栏 没有标准导航 UX 可能会让用户感到困惑。

就“drag-n-drop”segue 创建而言...在这里看到有关“我已经创建了所有这些 segue,但我无法返回 我在哪里。”这通常通过使用导航控制器的推送/弹出来解决,而不是(看似)随机的segues。

【讨论】:

好吧,玩了一会儿之后,我可以开始看到它的用处,因为它减少了所需的转场数量,因此它确实使它“更整洁”

以上是关于iOS - Navigationcontroller 与带有导航栏的 Viewcontroller的主要内容,如果未能解决你的问题,请参考以下文章

如何在导航栏内添加页面指示器?

如何在 UINavigationController 中为所有视图控制器添加 UiBarButtonItem

我如何能够推动自己的观点而不必每次都实例化自己

以编程方式导航到另一个视图控制器/场景

{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO

IO模型--阻塞IO,非阻塞IO,IO多路复用,异步IO