ios - 从自定义 UIView 呈现 View Controller (xib 文件)

标签 ios swift model-view-controller uiview

我有一个自定义 UIView 子类 (AccountInfoModal),通过将其添加为 subview 来显示在 ViewController 之上。 AccountInfoModal 有一个按钮,应该会导致显示另一个 ViewController。 初始化其他 ViewController 不是问题。呈现它是。

由于 AccountInfoModal 不是 ViewController 我无法使用 .present(viewControllerToPresent...)

如何从 UIView 内部呈现另一个 ViewController。我无法弄清楚。

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

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

但它会导致最后一行崩溃(无法在 bundle 中加载 NIB:...)。

最佳答案

试试这个:

在 AccountInfoModal 文件中创建一个位于 AccountInfoModal 类之上的协议(protocol):

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 View 的位置设置 AccountInfoModal delegate = self 实例

关于ios - 从自定义 UIView 呈现 View Controller (xib 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043342/

相关文章:

iOS 导航项 - 以编程方式切换

ios - 了解 Swift 的数组实现

ios - Swift:Apple Mach-O 链接器错误

model-view-controller - MVC 还是 MVP?哪种设计模式最有意义?

javascript - Angular 的 Web Worker 未更新 View

ios - GoogleMaps SDK 类未声明的类型或未解析的标识符

IOS开发:Tab Bar Item's Image Display a Blue Square

ios - 等距平铺 map 节点不出现

swift - 解析云代码查询未触发成功或错误

css - 如果 cshtml 中没有头部,则将 css 放在哪里