gpt4 book ai didi

ios - 如何在 swift 中使用委托(delegate)通知 UIViewController 在 xib 文件中单击了一个按钮?

转载 作者:行者123 更新时间:2023-11-28 12:13:20 24 4
gpt4 key购买 nike

我有点卡住了。我有一个 UIViewController 和一个扩展 UIView 的自定义 pop.xibpop.xib 连接到 pop.swift。在 UIViewController 中,一个按钮会弹出 .xib 文件。

pop.xib 中有一个按钮,单击该按钮可将一些数据发送到数据库。

但是当在 pop.xib 中单击该按钮以发送数据时,我希望 UIViewController

a) 知道什么时候 @IBAction func sendDataToDbAction(_ sender: Any) 被点击并且

b) 当 if 语句从 sendDataToDbAction 内部返回 false 时,然后在 UIViewController 上显示警报

//pop.swift

class Pop: UIView {

@IBOutlet var delegate: AnswerDelegate?

@IBAction func sendDataToDbAction(_ sender: Any)
{
if(answer == false)
{
don't send to db
alert pops up saying answer is false
}
else
{

}

}
}

我在 pop.swift 中设置了一个委托(delegate)

//pop.swift

@objc protocol AnswerDelegate {

func isCorrectAnswer()
}



//UIViewController

extension UIViewController:AnswerDelegate{

//set the pop.xib delegate to self
// implement func isCorrectAnswer

}

我只是不确定如何使用委托(delegate)来做我想做的事。

谢谢。

最佳答案

检查一下,你可以这样做。

Pop.swift

@objc protocol AnswerDelegate {
func isCorrectAnswer()
}

class Pop: UIView {

var answerDelegate: AnswerDelegate?

class func instanceFromNib() -> Pop {
return UINib(nibName: "Pop", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! Pop
}

@IBAction func sendDataToDbAction(_ sender: Any)
{
if(answer == false) {
//Alert
}
else {
answerDelegate?.isCorrectAnswer()
}
}
}

Controller :

class ViewController: UIViewController, AnswerDelegate {

func isCorrectAnswer() {

}


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

let popView = Pop.instanceFromNib()
popView.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
popView.answerDelegate = self

self.view.addSubview(popView)
}
}

关于ios - 如何在 swift 中使用委托(delegate)通知 UIViewController 在 xib 文件中单击了一个按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705964/

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