编辑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都可以工作:

  1. UITabBarController作为初始视图控制器开始
  2. 使用presentViewController而不是pushViewController
  3. 使用模态Storyboard segue来执行模态演示
  4. 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。