得到2个ViewControllers第一个是ViewController第二个tableviewcontroller

    class ViewController: UIViewController, CLLocationManagerDelegate, TabVCDelegate {

        func reciveData(_ numberOfRows: Int) {
            print(numberOfRows)
        }
...
    }

表视图控制器:
protocol TabVCDelegate {
    func reciveData(_ numberOfRows: Int)
}

class TabVC: UITableViewController {

    var delegate: TabVCDelegate?

    @IBAction func passDataBack(_ sender: UIButton) {
        delegate?.reciveData(5)
        self.dismiss(animated: true, completion: nil)
        print(delegate ?? "show me if its nil")
    }

我的代表?.reciveData(5)是因为某些原因nil无法找出它
当我有两个普通的ViewController时,它确实起作用了我是否遗漏了一些关于tableviewcontroller的东西?或者是别的什么?
任何帮助都将不胜感激。

最佳答案

第一个:
使属性delegate避免强引用循环
weak
为了实现您的协议应该符合weak var delegate: TabVCDelegate?

protocol TabVCDelegate: class {
    func reciveData(_ numberOfRows: Int)
}

下一步:
你必须把那个代表安排在某个地方。如果您在class类中引用了TabVC实例,则它将如下所示:
ViewController
HERE是关于“如何在Swift中创建委托”的详细描述

关于swift - 我的委托(delegate)方法变为nil,而不应该吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51517022/

10-14 21:22