得到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/