我有一个非常简单的项目,其中一个视图(发送视图)应该更改第二个视图(接收视图)的外观。我正在尝试使用委托,但我有一个问题,分配变量"委托"在SendingVC中。我试图在覆盖功能中做到这一点"准备"在ReceivingVC中,但不调用此方法。
我认为这段代码可行,但我不知道应该把它放在哪里:
import UIKit
class ReceivingVC: UIViewController, DataSendDelegate {
@IBOutlet weak var Label: UILabel!
func userDidEnterData(data: String) {
Label.text = data
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let sendVC : SendingVC! = tabBarController?.viewControllers![1] as! SendingVC
sendVC.delegate = self
}
}
ReceivingVC:
import UIKit
protocol DataSendDelegate {
func userDidEnterData(data: String)
}
class SendingVC: UIViewController {
var delegate: DataSendDelegate? = nil
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func setTextButton(_ sender: UIButton) {
if delegate != nil {
delegate?.userDidEnterData(data: "some text")
}
}
}
SendingVC:
Hello!ReturnHowSpaceAreSpaceYouKeyOemcomma
答案 0 :(得分:0)
谢谢bjd23,它完美无缺。所以解决方案将它放到viewDidLoad方法
编辑: 如果你有这个代码:
if delegate != nil {
delegate?.userDidEnterData(data: "some text")
}
在viewDidLoad而不是按钮操作中,我建议将它放到viewDidAppear或viewWillAppear,因为如果先发送你的发送视图,那么什么都不会发生