繁体   English   中英

从UITableViewCell在视图控制器中调用函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM