不调用协议(protocol)委托(delegate)方法..
首先查看 Controller 代码
class ViewController: UIViewController,customDelegate {
var seconviewcontroller : SecondViewController = SecondViewController()
@IBOutlet weak var Label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
seconviewcontroller.delegate = self
}
func didSelectData(_ result: String) {
Label.text = result
print("Didselect Data Call")
}
第二个 View Controller 代码
import UIKit
protocol customDelegate: class {
func didSelectData(_ result: String)
}
class SecondViewController: UIViewController {
var delegate: customDelegate?
@IBOutlet weak var secondbutton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func secondbuttonclick(_ sender: Any) {
let selectedItem = "naga"
delegate?.didSelectData(selectedItem)
}
如何调用函数 didSelectData 请帮助我
最佳答案
正如您已经使用 segue 在 View 之间导航一样。您也可以在此示例中使用它。我将以下内容作为代码示例提供,以便您可以追溯自己以检测代码中的问题。
第一 View Controller
import UIKit
class ViewController: UIViewController, SecondVCDelegate {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let secondVC = segue.destination as? SecondViewController {
secondVC.delegate = self
}
}
func didSelectData(_ result: String) {
label.text = result
print(result)
}
}
第二 View Controller
import UIKit
protocol SecondVCDelegate: class {
func didSelectData(_ result: String)
}
class SecondViewController: UIViewController {
@IBOutlet weak var button: UIButton!
weak var delegate: SecondVCDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonTapped(_ sender: UIButton) {
delegate?.didSelectData("My result")
dismiss(animated: true, completion: nil)
}
}
关于ios - Swift 中不调用协议(protocol)委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45214007/