我试图将SplitViewController放在我在didFinishLaunchingWithOptions
中启动的customTabBarController中。
我的实现遇到的麻烦是masterVC和detailVC的启动顺序错误。如何分配哪个是masterVC,哪个是detailVC。尽管交换了viewControllers
数组,我的实现仍将detailVC设置为masterVC。我以编程方式工作,没有情节提要。
我的实现方式
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = CustomTabBarController()
return true
}
class CustomTabBarController: UITabBarController, UISplitViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let secondTab = UINavigationController(rootViewController: ViewController())
secondTab.tabBarItem.title = "SecondTab"
let splitVC = UISplitViewController()
let masterVC = TableViewController()
let detailVC = DisplayDetailViewController()
let nc1 = UINavigationController(rootViewController: masterVC)
let nc2 = UINavigationController(rootViewController: detailVC)
splitVC.viewControllers = [nc1, nc2]
splitVC.preferredDisplayMode = .allVisible
splitVC.tabBarItem.title = "SplitView"
splitVC.delegate = self
viewControllers = [splitVC, secondTab]
}
}
上述实现产生以下结果:
在纵向模式下启动时,显示的第一个VC是detailVC,而应该是masterVC。
以横向模式启动时,顺序正确,即左侧的masterVC,右侧的detailVC。 如何使masterVC在纵向模式下启动时首先出现?有没有办法强制将masterVC分配为“主”视图?