从 UITableView 的子类访问 UIScrollViewDelegate
Posted
技术标签:
【中文标题】从 UITableView 的子类访问 UIScrollViewDelegate【英文标题】:Access UIScrollViewDelegate from subclass of UITableView 【发布时间】:2011-11-02 18:05:10 【问题描述】:我正在做一个项目,我必须大量使用 UITableViews。所以,我想检测表视图 (UIScrollView) 是否正在滚动。
首先我使用 UIViewController 中的 UIScrollViewDelegate 处理它,其中我的 UITableView 被添加为子视图。现在,为了保持代码干净,我想继承 UITableView 并且在这个类中我必须访问 UIScrollView 的委托方法,例如- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
.
但是我该怎么做呢?有可能吗?
【问题讨论】:
【参考方案1】:您所要做的就是实现- (void)scrollViewDidScroll:(UIScrollView *)scrollView
委托并检测滚动是否发生在您的UITableView
或其他地方。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
if(scrollView == self.tableView)
//your logic here
return;
【讨论】:
@qPaul 这需要放在你实现了UITableView
代码的.m
文件中。【参考方案2】:
那些UIScrollViewDelegate
方法必须在一个类中定义,该类是您要处理滚动更改的tableview 的委托。如果你把这些方法放在你的 UITableView
子类的实现文件中,那么你应该将 tableview 的委托设置为它自己:
[self setDelegate:self];
但是您还必须在 UITableView
子类中定义您的 UITableViewDelegate
和 UITableViewDataSource
方法。如果您想在项目中不止一处使用UITableView
子类,这可能会使事情复杂化。如果我是你,我会仔细考虑我的设计并做出相应的行为。
【讨论】:
以上是关于从 UITableView 的子类访问 UIScrollViewDelegate的主要内容,如果未能解决你的问题,请参考以下文章
如何从 UIView 子类调用 UIViewController?
UITableView 上的 UIAccessibility 实现