编辑按钮未显示在UITabBarController的MoreNavigationController中

mem*_*ons 9 iphone uitabbarcontroller ios swift

A UITabBarController被推入堆栈:

let presenter = presentingViewController as! UINavigationController
let tabvc = UITabBarController()
tabvc.viewControllers = vcs
tabvc.customizableViewControllers = vcs
presenter.pushViewController(tabvc, animated: true)
Run Code Online (Sandbox Code Playgroud)

一旦显示,正确显示更多选项卡按钮,但重新排列选项卡栏的编辑按钮不会.根据MoreNavigationController上的文档:

标准更多项的界面包括一个"编辑"按钮,允许用户重新配置标签栏.默认情况下,允许用户重新排列选项卡栏上的所有项目.但是,如果您不希望用户修改某些项,则可以从customizableViewControllers属性中的数组中删除相应的视图控制器.

我的猜测是标签栏不适合在导航控制器中使用.关于带回编辑按钮的任何想法?

Swi*_*ect 16

你可以同时拥有a UINavigationController和a UITabBarController; 使用Storyboard帮助更好地理解问题,任何这些解决方案都可以工作:

  1. 开始时用UITabBarController作为初始视图控制器
  2. presentViewController而不是pushViewController
  3. 使用模态Storyboardsegue执行模态演示
  4. 交换掉rootViewController动态

初始视图控制器设计

标签栏控制器是初始视图控制器时,正常显示编辑按钮.

在此输入图像描述


推动设计

另一个导航控制器 初始视图控制器,使用5个自适应动作Segue之一:

  • 节目
  • 习惯

- >没有编辑按钮,因为它与父母直接冲突UITableViewController.

  • 查看详细
  • 目前模态
  • Popover演示文稿

- > 按预期显示编辑按钮.

在此输入图像描述


1.程序模式

使用问题中提供的确切代码,更改最后一行:

let presenter = presentingViewController as! UINavigationController
let tabvc = UITabBarController()
tabvc.viewControllers = vcs
tabvc.customizableViewControllers = vcs
presenter.presentViewController(tabvc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

2.故事板模态

保持Storyboard主题,创建一个正确类型的segue,分配一个标识符(即presentModallySegue),上面的5行成为这一:

self.performSegueWithIdentifier("presentModallySegue", sender: self)
Run Code Online (Sandbox Code Playgroud)

3.根交换

更激烈的解决方案涉及在window级别上交换根视图控制器:

let tabvc = UITabBarController()
tabvc.viewControllers = vcs
tabvc.customizableViewControllers = vcs
self.view.window!.rootViewController = tabvc
Run Code Online (Sandbox Code Playgroud)

结论

更改设计以采用Tab Bar Controller作为初始View Controller,或以模态方式显示Tab Bar Controller .


Vik*_*ech 5

原因是您的演示者的导航栏与" 更多"部分的导航栏重叠.

如果您没有显示导航控制器的导航栏,则当您点击" 更多"选项卡时,您将能够再次看到" 编辑"按钮.