我正在研究一个UISplitViewController
子类,它有UINavigationController
作为主视图控制器(原因是我需要导航栏)。 UINavigationController
有一个FormViewController
子类作为rootViewController。在表单中,我使用PushRow
来显示可选选项列表。问题是当我在常规宽度环境中点击PushRow
时,SelectorViewController
被推入主导航堆栈中。我希望SelectorViewController
显示为UISplitViewController
详细信息。
我创建了一个DummyNavigationController
,如下所示:
class DummyNavigationController: UINavigationController {
override init(rootViewController: UIViewController) {
super.init(rootViewController: rootViewController)
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func targetViewController(forAction action: Selector, sender: Any?) -> UIViewController? {
if let parent = parent as? UISplitViewController {
return parent.isCollapsed ? self : parent
}
return self
}
}
使用它作为FormViewController
的导航控制器我能够在细节上看到SelectorViewController
,但我不喜欢这种方法。
还有什么我可以做的吗?