编辑button不显示在UITabBarController的MoreNavigationController中
一个UITabBarController
被推入堆栈:
let presenter = presentingViewController as! UINavigationController let tabvc = UITabBarController() tabvc.viewControllers = vcs tabvc.customizableViewControllers = vcs presenter.pushViewController(tabvc, animated: true)
一旦呈现更多标签button正确显示,但编辑button重新排列标签栏不。 根据MoreNavigationController上的文档 :
标准更多项目的界面包括一个编辑button,允许用户重新configuration标签栏。 默认情况下,用户可以重新排列标签栏上的所有项目。 如果您不希望用户修改某些项目,则可以从customizableViewControllers属性中的数组中删除相应的视图控制器。
我的猜测是标签栏不是很高兴在导航控制器。 任何关于带回编辑button的想法?
你可以同时拥有一个UINavigationController
和一个UITabBarController
; 使用Storyboard
有助于更好地理解这个问题,任何这些解决scheme都可以工作:
- 以
UITabBarController
作为初始视图控制器开始 - 使用
presentViewController
而不是pushViewController
- 使用模态
Storyboard
segue来执行模态演示 - dynamic地移出
rootViewController
初始视图控制器devise
当标签栏控制器是初始视图控制器时 , 编辑button显示正常。
推动devise
另一个导航控制器是 初始视图控制器 ,使用5个自适应操作Segue中的一个:
- 显示
- 习惯
– >没有编辑button,因为它与父UITableViewController
直接冲突。
- 查看详细
- 目前情况
- Popover演示文稿
– > 编辑button按预期显示。
码
1.程序模式
使用问题中提供的确切代码,更改最后一行:
let presenter = presentingViewController as! UINavigationController let tabvc = UITabBarController() tabvc.viewControllers = vcs tabvc.customizableViewControllers = vcs presenter.presentViewController(tabvc, animated: true, completion: nil)
2. Storyboard Modal
与Storyboard
主题保持一致,创build一个正确types的segue,分配一个标识符(即presentModallySegue ),上面的5行成为这一行 :
self.performSegueWithIdentifier("presentModallySegue", sender: self)
3.根交换
更激进的解决scheme包括在window
级别更换根视图控制器:
let tabvc = UITabBarController() tabvc.viewControllers = vcs tabvc.customizableViewControllers = vcs self.view.window!.rootViewController = tabvc
结论
要么改变您的devise,以采用标签栏控制器作为初始视图控制器 ,或模态地呈现标签栏控制器。
原因是您的演示者的导航栏与“ 更多”部分的导航栏重叠。
如果您没有为您的导航控制器显示导航栏,则在点击更多选项卡时,您将能够再次看到编辑button。