[英]Call function in view controller from UITableViewCell
我有一个问题使我发疯,如何从UITableViewCell内的视图控制器中调用函数。 -我正在Swift中做。
因此,我有一个View Controller-在该mainVC中称为mainVC,我声明了一个tableView,该tableView在要调用在mainVC中声明的函数的tableView单元格中包含UITableViewCell(自定义/动态)。 如果我喜欢self.superview?.myFunc不起作用。
我希望有一个人可以帮助我...
不幸的是,这并不容易。 您想研究的是NSNotificationCenter或什至更好的东西:-代表。 如果您想更好地了解代表,我建议您使用本教程: http : //www.raywenderlich.com/75289/swift-tutorial-part-3-tuples-protocols-delegates-table-views
如果您不想阅读所有内容,我将尽力在这里进行解释。
假设您有两个视图控制器:mainVC和otherVC。
在otherVC的类定义上方,添加以下代码:
protocol OtherVCDelegate {
func cellClicked()
}
在otherVC的类内,添加以下属性:
var delegate: OtherVCDelegate?
在didSelectRow(或执行代码的位置)中,添加以下代码:
self.delegate?.cellClicked()
现在,回到mainVC:通过将mainVC添加到此类中,使其符合该委托:
class MainViewController: UIViewController, DetailDelegate {
}
在MainViewController中,添加委托函数和将要执行的函数放入您的现场:
func cellClicked() {
println("Cell was clicked")
myFunc()
}
您要做的最后一件事是使MainViewController成为OtherViewController的委托。 在从mainVC访问otherVC的地方必须这样做。 假设是在prepareForSegue中完成的:
if segue.identifier == "showDetail" {
(segue.destinationViewController as DetailViewController).delegate = self
}
起初它有点复杂,但是一旦您掌握了它,就可以在公园散步。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.