UITableView
UITableViewCell
UICollectionViewCell
ViewController
UITableView
UITableViewCell
内创建了UITableViewCell
。
对于两者,TextField
和ViewController
我有一个单独的子类文件。在CADisplayLink(target: self, selector: #selector(tick(sender:)))
- 子类中,我有一个值更改的委托操作链接到其中的tick
。现在每当Textfield的这个值发生变化(调用该函数)时,我需要将值传递给我处理它的@objc func tick(sender: CADisplayLink) {
...
}
。
关于MVC原则如何做到这一点?
答案 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