[英]Swift - Delegate method with TabBar
我有一个非常简单的项目,其中一个视图(发送视图)应更改第二个视图(接收视图)的外观。 我正在尝试使用委托,但是SendingVC中的赋值变量“ delegate”存在问题。 我试图在ReceivingVC中的重写功能“准备”中执行此操作,但是未调用此方法。
我认为这段代码可以工作,但是我不知道该放在哪里:
let sendVC : SendingVC! = tabBarController?.viewControllers![1] as! SendingVC
sendVC.delegate = self
正在接收VC:
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
}
}
发送VC:
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")
}
}
}
谢谢bjd23,它运行良好。 所以解决方案放在了viewDidLoad方法上
编辑:如果您有此代码:
if delegate != nil {
delegate?.userDidEnterData(data: "some text")
}
建议您在viewDidLoad中而不是在按钮操作中将其放到viewDidAppear或viewWillAppear中,因为如果先加载您的发送视图,则不会发生任何事情
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.