Vol*_*da2 7 uitableview ios observer-pattern
我需要跟踪tableView.contentOffset.y是否可以将观察者添加到tableView.contentOffset?
我认为这是不可能的,因为contentOffset不会继承NSObject类.
还有其他解决办法吗?
wat*_*n12 22
UITableView是一个UIScrollView子类,因此您可以使用该UIScrollViewDelegate方法scrollViewDidScroll:在视图滚动时得到通知.检查contentOffset的scrollView该方法
contentOffset 是一个关键路径,因此您也可以使用KVO观察其变化
[self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
Run Code Online (Sandbox Code Playgroud)
斯威夫特 5
tableContentObserver = table.observe(\UITableView.contentOffset, options: .new) { [weak self] table, change in
self?.navigationItem.rightBarButtonItem?.title = "\(change.newValue)"
}
Run Code Online (Sandbox Code Playgroud)
小智 7
雨燕3
contentOffset使用键值观察(KVO)为关键路径添加观察者:
tableView.addObserver(self, forKeyPath: #keyPath(UIScrollView.contentOffset), options: [.old, .new], context: nil)
Run Code Online (Sandbox Code Playgroud)
并处理更改通知:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == #keyPath(UIScrollView.contentOffset) {
// Your code
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8625 次 |
| 最近记录: |