[英]Change 'edit' Button Color from moreNavigationController of UITabBarController?
[英]Edit button not displayed in UITabBarController's MoreNavigationController
正在将UITabBarController
压入堆栈:
let presenter = presentingViewController as! UINavigationController
let tabvc = UITabBarController()
tabvc.viewControllers = vcs
tabvc.customizableViewControllers = vcs
presenter.pushViewController(tabvc, animated: true)
一旦显示,正确显示更多选项卡按钮,但重新排列选项卡栏的编辑按钮不会。 根据MoreNavigationController上的文档 :
标准更多项的界面包括一个“编辑”按钮,允许用户重新配置标签栏。 默认情况下,允许用户重新排列选项卡栏上的所有项目。 但是,如果您不希望用户修改某些项,则可以从customizableViewControllers属性中的数组中删除相应的视图控制器。
我的猜测是标签栏不适合在导航控制器中使用。 关于带回编辑按钮的任何想法?
你可以同时拥有UINavigationController
和UITabBarController
; 使用Storyboard
有助于更好地理解问题,任何这些解决方案都可以使用:
UITabBarController
作为初始视图控制器 presentViewController
而不是pushViewController
Storyboard
segue执行模态演示 rootViewController
标签栏控制器是初始视图控制器时 ,正常显示编辑按钮。
另一个导航控制器是 初始视图控制器 ,使用5个自适应动作Segue之一:
- > No Edit按钮,因为它与父UITableViewController
直接冲突。
- >按预期显示编辑按钮。
1.程序模式
使用问题中提供的确切代码,更改最后一行:
let presenter = presentingViewController as! UINavigationController
let tabvc = UITabBarController()
tabvc.viewControllers = vcs
tabvc.customizableViewControllers = vcs
presenter.presentViewController(tabvc, animated: true, completion: nil)
2.故事板模态
保持Storyboard
主题,创建一个正确类型的segue,分配一个标识符(即presentModallySegue ),上面的5行成为这一行 :
self.performSegueWithIdentifier("presentModallySegue", sender: self)
3.根交换
更激烈的解决方案涉及在window
级别交换根视图控制器:
let tabvc = UITabBarController()
tabvc.viewControllers = vcs
tabvc.customizableViewControllers = vcs
self.view.window!.rootViewController = tabvc
更改设计以采用Tab Bar Controller作为初始View Controller ,或以模态方式显示Tab Bar Controller。
原因是您的演示者的导航栏与“ 更多”部分的导航栏重叠。
如果您没有显示导航控制器的导航栏,则在点击“ 更多”选项卡时,您将能够再次看到“ 编辑”按钮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.