我想实现与Facebook信使应用程序相同的流程,在主视图中有一个选项卡条控制器。看见
我所做的和这个答案Create a TabBar Controller with a Master-detail template?中描述的完全一样
不过!它不能在iPhone上正确工作,只在iPad上工作。在iPhone上,导航向后不起作用。细节窗格打开,就像一个模态seque,没有向后移动的可能性。这里的错误可能是什么?用标准的uisplitviewcontroller控制器甚至可以实现这一点吗?我也尝试过将导航控制器嵌入到tabbarcontroller中(将导航控制器作为主视图中的根),然后它可以用于iPhone,而不是iPad。
发布于 2016-10-25 19:53:29
最后,我避免了使用UITabBarController
,而是创建了一个继承自UIViewController
的CustomTabBarController。自定义控制器的视图底部有一个UITabBar
,在容器视图中嵌入了多个其他UIViewController
。自定义控制器将所有嵌入式视图控制器的isHidden
属性设置为true
,但对应于所选选项卡的视图控制器除外。
下面是一个简单的示例,其中有两个选项卡,由它们的标记标识:
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
使用更多的内存,因为所有的子视图控制器都是在应用程序加载时加载的,而不是在第一次显示它们时加载的。https://stackoverflow.com/questions/33668952
复制相似问题