我有一个自定义的UIView子类(AccountInfoModal),该子类通过将其添加为子视图而显示在ViewController的顶部。 AccountInfoModal有一个按钮,应该导致显示另一个ViewController
初始化其他ViewController并不是问题。呈现它。

由于AccountInfoModal不是ViewController,所以我不能使用.present(viewControllerToPresent...)

如何从UIView中呈现另一个ViewController。我想不明白。

编辑:
我已经实现了这个建议:

let underlyingVC = UIApplication.shared.keyWindow?.rootViewController
underlyingVC?.performSegue(withIdentifier: "SEGSignInViewController", sender: nil)


但这会导致最后一行崩溃(无法在捆绑包中加载NIB:...)。

最佳答案

尝试这个 :

在AccountInfoModal文件中,在AccountInfoModal类上方创建一个协议:

protocol AccountInfoModalDelegate : class {
func willPresentingViewController(){
}


在AccountInfoModal类中定义delegate变量:

weak var delegate?


内部按钮动作调用:

delegate?.willPresentingViewController()


在ViewController文件中添加以下内容:

extension ViewController :  AccountInfoModalDelegate {
    func willPresentingViewController(){
    let vc = AnotherVC()
    self.present(vc, animated : true, completion : nil)
     }
}


最后一步,在您调用的位置设置AccountInfoModal delegate = self的实例以显示AccountInfoModal视图

08-08 08:53