1

我正在研究一个UISplitViewController具有主视图控制器的子类UINavigationController(原因是我需要导航栏)。UINavigationController有一个FormViewController作为 rootViewController 的子类。在表单中,我使用 aPushRow来显示可选选项列表。问题是,当我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细节,但我不喜欢这种方法。

还有什么我可以做的吗?

4

1 回答 1

0

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

您只能将 SplitViewController 的一侧嵌入 UINavigationController 而不是整个 SplitViewController,这样当您选择 SelectorViewController 时,它只会在 SplitViewController 的一侧显示它。

在此处输入图像描述

于 2017-03-14T15:08:34.783 回答