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帮助更好地理解问题,任何这些解决方案都可以工作:
UITabBarController作为初始视图控制器presentViewController而不是pushViewControllerStoryboardsegue执行模态演示rootViewController动态标签栏控制器是初始视图控制器时,正常显示编辑按钮.
另一个导航控制器是 初始视图控制器,使用5个自适应动作Segue之一:
- >没有编辑按钮,因为它与父母直接冲突UITableViewController.
- > 按预期显示编辑按钮.
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 .
| 归档时间: |
|
| 查看次数: |
1767 次 |
| 最近记录: |