将数据从TableViewCell发送到Controller MVC-Principle

时间:2017-11-11 11:37:58

标签: swift model-view-controller swift3 view viewcontroller

UITableView UITableViewCell UICollectionViewCell ViewController UITableView UITableViewCell内创建了UITableViewCell

对于两者,TextFieldViewController我有一个单独的子类文件。在CADisplayLink(target: self, selector: #selector(tick(sender:))) - 子类中,我有一个值更改的委托操作链接到其中的tick。现在每当Textfield的这个值发生变化(调用该函数)时,我需要将值传递给我处理它的@objc func tick(sender: CADisplayLink) { ... }

关于MVC原则如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用块或委托或将值传递回ViewController。

UITableViewCell子类内部声明一个委托

protocol TableViewCellDelegate {
  func new(value: Any) // your data type here
}

class MySubclass: UITableViewCell {
  weak var delegate: TableViewCellDelegate?
}

现在在ViewController连接到此委托。您可以将其传递给UICollectionViewCell子类,然后从那里传递到UITableViewCell

在您调用方法的UITextField的值更改委托中

   self.delegate?.new(value: "NewTextHere!")

这样可以将数据传递回ViewController