如何将协议与导航控制器结合使用?

问题描述 投票:0回答:1

嘿,伙计们,我又有一个小问题。我怎么能把一个协议和导航控制器结合起来使用。所以首先这里有我的两个类。

第一视图控制器:

class VC1: UIViewController{

var cons = "nothing"

@IBAction func PRINT(_ sender: Any) {
    print(cons)
}

@IBAction func PRESENT(_ sender: Any) {
    let VC = storyboard?.instantiateViewController(identifier: "VC") as! VC2
    VC.delegate = self
    present(VC, animated: true, completion: nil)
}  }

extension VC1: data {
func give(text: String) {
    cons = text
} }

第二视图控制器

protocol data {
func give(text: String)}

class VC2: UIViewController {

var delegate: data!

@IBAction func SAVEDISMISS(_ sender: Any) {
    delegate.give(text: "Hallo")
    dismiss(animated: true, completion: nil)
}}

这也是我的故事板请在这里输入图片描述

所以现在我就来谈谈我的问题。当我运行这段代码时,当我在VC2上执行任何切换时,都会出现一个错误信息,因为通过使用协议,导航控制器被排除在外,但是当我用导航控制器代替VC2时,协议就不再工作了。

我可以改变什么,使导航控制器不被排除,而协议又能同时工作。

希望有人能帮助我,并为我的英语不好再次道歉。我希望你能理解一切。

有一个伟大的一天或一夜。

swift uinavigationcontroller delegates segue protocols
1个回答
1
投票

替换 PRESENT 函数,当你试图用下面的代码呈现一个 UINavigationController.

@IBAction func PRESENT(_ sender: Any) {
    let VC = storyboard?.instantiateViewController(identifier: "VC") as! VC2
    VC.delegate = self
    let navigationController = UINavigationController(rootViewController: VC)
    present(navigationController, animated: true, completion: nil)
}
© www.soinside.com 2019 - 2024. All rights reserved.