ios - Swift 中不调用协议(protocol)委托(delegate)方法

标签 ios swift swift3

不调用协议(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 之间导航一样。您也可以在此示例中使用它。我将以下内容作为代码示例提供,以便您可以追溯自己以检测代码中的问题。

enter image description here

第一 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/

相关文章:

ios - 应用程序的新版本及其推送通知

swift - 使用 Swift 选择 UITextView 的整个文本

swift3 - 如何在 Swift 中避免 "Variable j written into, but never read"?

swift - 用于检查可选值的 uitextfield 类型的非可选表达式

ios - 来自 GitHub 的项目的 Apple Mach-O 链接器错误

ios - 在 UITableView 中实现 imageView 滑动,具有水平滚动和页面指示器

c# - 当我的应用程序运行时,是否可以检测 float /多窗口应用程序的使用?

ios - 如何在 Swift 3/4 中通过单击按钮使图像旋转?

ios - Google map 自定义信息窗口 - 弹出框形状?

ios - CoreData - 创建新实体 - 为什么不需要保存它?