首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UITabBarController内部的UiSplitViewController主

UITabBarController内部的UiSplitViewController主
EN

Stack Overflow用户
提问于 2015-11-12 10:11:51
回答 1查看 2.1K关注 0票数 10

我想实现与Facebook信使应用程序相同的流程,在主视图中有一个选项卡条控制器。看见

我所做的和这个答案Create a TabBar Controller with a Master-detail template?中描述的完全一样

不过!它不能在iPhone上正确工作,只在iPad上工作。在iPhone上,导航向后不起作用。细节窗格打开,就像一个模态seque,没有向后移动的可能性。这里的错误可能是什么?用标准的uisplitviewcontroller控制器甚至可以实现这一点吗?我也尝试过将导航控制器嵌入到tabbarcontroller中(将导航控制器作为主视图中的根),然后它可以用于iPhone,而不是iPad。

EN

回答 1

Stack Overflow用户

发布于 2016-10-25 19:53:29

最后,我避免了使用UITabBarController,而是创建了一个继承自UIViewController的CustomTabBarController。自定义控制器的视图底部有一个UITabBar,在容器视图中嵌入了多个其他UIViewController。自定义控制器将所有嵌入式视图控制器的isHidden属性设置为true,但对应于所选选项卡的视图控制器除外。

下面是一个简单的示例,其中有两个选项卡,由它们的标记标识:

代码语言:javascript
运行
复制
class CustomTabBarController: UIViewController, UITabBarDelegate {

    @IBOutlet weak var tab1View: UIView!
    @IBOutlet weak var tab2View: UIView!
    @IBOutlet weak var tabBar: UITabBar!

    override func viewDidLoad() {
        tabBar.delegate = self
    }

    func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
        tab1View.isHidden = item.tag != 1
        tab2View.isHidden = item.tag != 2
    }
}

此自定义控制器应设置为UINavigationController的根,其本身应设置为拆分视图控制器的主控制器:

此设置适用于iPad和iPhone:

这种方法有几个缺点:

  • 自定义选项卡控制器不太容易使用--添加一个新选项卡需要添加另一个嵌入式视图并将其连接到控制器中的一个出口。
  • 在选项卡选择时,必须在自定义选项卡控制器内设置导航项的标题和左、右栏按钮项。
  • 这个方法比普通的UITabBarController使用更多的内存,因为所有的子视图控制器都是在应用程序加载时加载的,而不是在第一次显示它们时加载的。
  • 当(纵向) iPhone模式中显示详细信息时,此设置将导致选项卡条被隐藏。这是我想要的,也是Facebook Messenger应用程序中的行为,但是如果您希望选项卡条永久可见,这个方法不会做到这一点。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33668952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档