繁体   English   中英

Swift-使用TabBar的委托方法

[英]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")
    }
}
}

情节提要img

谢谢bjd23,它运行良好。 所以解决方案放在了viewDidLoad方法上

编辑:如果您有此代码:

if delegate != nil {
    delegate?.userDidEnterData(data: "some text")
}

建议您在viewDidLoad中而不是在按钮操作中将其放到viewDidAppear或viewWillAppear中,因为如果先加载您的发送视图,则不会发生任何事情

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM