Swift - 使用TabBar委托方法

时间:2017-10-29 11:01:19

标签: ios swift delegates uitabbarcontroller

我有一个非常简单的项目,其中一个视图(发送视图)应该更改第二个视图(接收视图)的外观。我正在尝试使用委托,但我有一个问题,分配变量"委托"在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

Storyboard img

1 个答案:

答案 0 :(得分:0)

谢谢bjd23,它完美无缺。所以解决方案将它放到viewDidLoad方法

编辑: 如果你有这个代码:

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

在viewDidLoad而不是按钮操作中,我建议将它放到viewDidAppear或viewWillAppear,因为如果先发送你的发送视图,那么什么都不会发生