我有一个自定义的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视图