我正在尝试以模态方式呈现视图控制器并获得着名的Presenting view controllers on detached view controllers is discouraged
错误。我对它进行了研究,并且共识解决方案似乎是从父母那里做出来的,我试过但没有成功。我怀疑问题是因为导航控制器是从一个struct实例化为一个静态属性(为了让其他视图控制器更容易弹出到root,因为这是UX所要求的)。
struct SectionNavigationControllers {
static var one = SectionNavigationController()
static var two = SectionNavigationController()
static var three = SectionNavigationController()
static var four = SectionNavigationController()
}
这里是创建其中一个导航控制器的地方(使用此结构):
let SectionOneRoot = MasterSearchViewController()
func addNavigationController() {
self.addChildViewController(SectionOneRoot)
SectionOneRoot.didMove(toParentViewController: self)
SectionNavigationControllers.one = SectionNavigationController(rootViewController: SectionOneRoot)
view.addSubview(SectionNavigationControllers.one.view)
}
因此,当我尝试从MasterSearchViewController
(根视图控制器)以模态方式呈现视图控制器时,我得到了所述错误。
navigationController?.present(Random200ViewController(), animated: true, completion: nil)
想法?
答案 0 :(得分:1)
如果你想在你的应用程序的根viewController上呈现它,你可以这样做:
let rootVC = UIApplication.shared.keyWindow?.rootViewController
rootVC?.present(Random200ViewController(), animated: true, completion: nil)
答案 1 :(得分:1)
这是一个便利功能,您可以添加到任何代码中,以便在应用中的任何位置显示视图控制器:
func showModally(_ viewController: UIViewController) {
let window = UIApplication.shared.keyWindow
let rootViewController = window?.rootViewController
rootViewController?.present(viewController, animated: true, completion: nil)
}
我希望它有所帮助!