从 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
}
一开始有点复杂,但是一旦你掌握了它,就像在公园里散步一样。
我遇到了一个让我发疯的问题,如何从 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
}
一开始有点复杂,但是一旦你掌握了它,就像在公园里散步一样。