PushRow和UISplitViewController导航

时间:2017-03-14 14:40:59

标签: ios swift3 eureka-forms

我正在研究一个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,但我不喜欢这种方法。

还有什么我可以做的吗?

1 个答案:

答案 0 :(得分:0)

我知道这不是一个非常具体的答案,但我缺乏评论的声誉。

您只能在UINavigationController中嵌入SplitViewController的一侧而不是整个SplitViewController,这样当您切换到SelectorViewController时,它只会在SplitViewController的一侧显示它。

enter image description here