繁体   English   中英

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

[英]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属性中的数组中删除相应的视图控制器。

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

你可以同时拥有UINavigationControllerUITabBarController ; 使用Storyboard有助于更好地理解问题,任何这些解决方案都可以使用:

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

初始视图控制器设计

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

在此输入图像描述


推动设计

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

  • 节目
  • 习惯

- > No Edit按钮,因为它与父UITableViewController直接冲突。

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

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

在此输入图像描述


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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM