嘿,伙计们,我又有一个小问题。我怎么能把一个协议和导航控制器结合起来使用。所以首先这里有我的两个类。
第一视图控制器:
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时,协议就不再工作了。
我可以改变什么,使导航控制器不被排除,而协议又能同时工作。
希望有人能帮助我,并为我的英语不好再次道歉。我希望你能理解一切。
有一个伟大的一天或一夜。
替换 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)
}