gpt4 book ai didi

ios - Swift - 使用 TabBar 的委托(delegate)方法

转载 作者:行者123 更新时间:2023-11-30 12:02:50 41 4
gpt4 key购买 nike

我有一个非常简单的项目,其中一个 View (发送 View )应该更改第二个 View (接收 View )的外观。我正在尝试使用委托(delegate),但在 SendingVC 中分配变量“委托(delegate)”时遇到问题。我尝试在 ReceivingVC 中的 override func“prepare”中执行此操作,但未调用此方法。

我认为这段代码可以工作,但我不知道应该把它放在哪里:

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")
}
}
}

Storyboard img

最佳答案

谢谢bjd23,它工作得很好。所以解决方案将其放入viewDidLoad方法

编辑:如果您有此代码:

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

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

关于ios - Swift - 使用 TabBar 的委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46999391/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com