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

时间:2015-08-01 23:00:06

标签: ios iphone swift uitabbarcontroller

正在将UITabBarController推入堆栈:

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

一旦显示,正确显示更多标签按钮,但重新排列标签栏的编辑按钮不会。根据{{​​3}}:

  

标准更多项目的界面包含一个编辑按钮   允许用户重新配置标签栏。默认情况下,用户是   允许重新排列标签栏上的所有项目。如果你不想要的话   但是,用户可以修改某些项目,您可以删除相应的视图   来自customizableViewControllers中数组的控制器   属性。

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

2 个答案:

答案 0 :(得分:16)

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

  1. UITabBarController作为初始视图控制器
  2. 开始
  3. 使用presentViewController代替pushViewController
  4. 使用模态Storyboard segue执行模态演示
  5. 动态换掉rootViewController
  6. 初始视图控制器设计

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

    enter image description here

    推送设计

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

    • 显示
    • 定制

    - >没有修改按钮,因为它与父UITableViewController直接冲突。

    • 显示详细信息
    • 目前模态
    • Popover Presentation

    - >按预期显示修改按钮。

    enter image description here

    代码

    <强> 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。 root交换

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

    let tabvc = UITabBarController()
    tabvc.viewControllers = vcs
    tabvc.customizableViewControllers = vcs
    self.view.window!.rootViewController = tabvc
    

    结论

    更改设计以采用标签栏控制器作为初始视图控制器,或者显示标签栏控制器模态

答案 1 :(得分:5)

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

如果您不显示导航控制器的导航栏,当您点击修改按钮>更多标签。