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

Call function in view controller from UITableViewCell

我遇到了一个让我发疯的问题,如何从 UITableViewCell 中调用视图控制器中的函数。 - 我在 Swift.

中这样做

所以我有一个视图控制器 - 叫做 mainVC 在这个 mainVC 中,我声明了一个 tableView,它在那个 tableView 单元格中包含一个 UITableViewCell(自定义/动态),我想调用一个在 mainVC 中声明的函数。如果我喜欢 self.superview?.myFunc 不起作用。

希望有人能帮帮我...

不幸的是,事情并没有那么容易。 您想研究的是 NSNotificationCenter 或什至更好: - 代表。 如果你想更好地理解委托,我推荐这个教程:http://www.raywenderlich.com/75289/swift-tutorial-part-3-tuples-protocols-delegates-table-views

如果你不想看那么多,我会尽力在这里解释。

假设您有两个视图控制器:mainVC 和 otherVC。

在otherVC中的class定义之上,添加如下代码:

protocol OtherVCDelegate {
   func cellClicked()
}

在otherVC的class里面,添加如下属性:

var delegate: OtherVCDelegate?

在didSelectRow(或者你执行代码的地方),添加如下代码:

self.delegate?.cellClicked()

现在,回到 mainVC:通过将 mainVC 添加到 class 来使 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
    }

一开始有点复杂,但是一旦你掌握了它,就像在公园里散步一样。