从UITableViewCell调用ViewController中的函数

时间:2015-08-18 09:33:40

标签: ios swift uitableview

如何从ViewController UITableView的自定义tableview单元格中调用ViewController的函数(使用SWIFT)?

3 个答案:

答案 0 :(得分:10)

你可以采用几种方法

  1. Delegation(创建协议委托uitableViewcell)将视图控制器设置为UITabelVeiwCell的委托,然后从单元格调用self.delegate.whatEverDeelgate()
  2. 从单元格发布通知并在视图控制器视图NSNotificationCenter.defaultCenter().addObserver(self, selector: "nameOfSelector", name: "Name Of Notification", object: nil)内注册该通知,然后从tableView单元格postNotification注册,但请确保您还要删除Observer,请访问此link以获取更多详细信息
  3. 在UITableViewCell中保留viewController的weakReference,意味着创建一个属性@weak var viewController:YourViewcontroller并使用它来调用视图控制器上的方法(不推荐)
  4. 在关键路径KVO上添加观察者(当属性更改其值时,这将在视图控制器中调用方法)对于您的方案可能不是必需的

答案 1 :(得分:4)

从您的手机发布通知:

NSNotificationCenter.defaultCenter().postNotificationName("notificationName", object: nil)

然后在你的viewController中听取它:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "functionToCall", name: "notificationName", object: nil)

确保在viewController中定义新函数:

func functionToCall() {
    //This function will be called when you post the notification
}

答案 2 :(得分:1)

您可以在protocol课程中声明UIableViewCell

成为此协议的ViewController代表。

在您的单元格中执行某些操作时,请调用此委托方法。