【问题标题】:Is Tab Bar Controller allowed to be contained by navigation controller in modern iOS?现代iOS中的导航控制器是否允许包含标签栏控制器?
【发布时间】:2016-05-09 06:50:27
【问题描述】:

过去,Apple 表示不允许将 Tab Bar Controller 包含在 Navigation Controller 中,这可能是因为 Tab Bar Controller 也可以包含 Navigation Controller。在同时存在 Tab Bar Controller 和 Navigation Bar Controller 的应用中,Tab Bar Controller 始终需要位于根目录。

现在使用 Storyboard,可以通过 Show segue 将 Tab Bar View Controller 推送到 Navigation Controller 中。这是否意味着这条规则不再适用于现代 iOS SDK?

【问题讨论】:

    标签: uitabbarcontroller uinavigationbar ios9 xcode7


    【解决方案1】:

    我想我在文档的某处读到标签栏控制器应该始终是应用程序的根视图控制器。 (不幸的是,我找不到这篇文章。)此外,Xcode 不允许选择标签栏控制器,然后选择编辑器 > 嵌入 > 导航控制器。这可能是 Apple 不鼓励开发人员这样做。

    所以是的,我相信这条规则仍然适用:在现代 SDK 中,将标签栏控制器包含在导航控制器中是可能的,但不鼓励

    真正的问题是你为什么要这样做?如果是为应用制作一个登录屏幕,然后在用户登录后推送标签栏控制器,例如,这是合理的嵌入标签栏控制器。 (虽然我个人更喜欢使用模态转场)

    看看iOS Human Interface Guidelines regarding tabs。如果标签栏的实现方式不“在应用程序级别组织信息”,那么不应该使用标签栏,因为iOS用户希望标签栏让他们浏览应用程序的主要功能。

    【讨论】:

    • 我的应用一开始是一个演练 + 位置屏幕。演练嵌入在导航控制器中,然后演练的最后一步将推入主要内容,即标签栏控制器。据我所知,情节提要允许显示标签栏控制器没有问题,除非标签栏控制器的显示转场实际上并未将标签栏控制器添加到导航堆栈中。
    • 太好了,所以它符合我提到的准则并且没有故障,因此我会说它是“允许的”。
    • 但它确实产生了一个问题,为什么在故事板中我们实际上可以将标签栏控制器推入导航控制器,即使在代码中不鼓励这样做。
    • 好点,但不推荐不等于不可能。一个随机的例子:改变 UIPickerView 的大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多