我正在使用符合这些协议的自定义 UITableView:
- UITableView 数据源
- UIScrollViewDelegate
我的应用程序中的许多地方都使用了这个表格视图。我已经在后台实现了图像下载。当用户滚动时,会下载额外的图像——这就是我需要实现 UIScrollViewDelegate 方法的原因。我绝对希望在这个类中而不是在视图控制器中拥有它,因为这些自定义表视图中的每一个都使用相同的方法实现。
这是问题所在。在我的视图控制器中,我需要从 UITableViewDelegate 实现 didSelectRowAtIndexPath 方法,因为我需要执行 segue。但是当我这样做(并将委托设置为 self)时,UIScrollViewDelegate 方法会被此视图控制器捕获并且不会传播到表视图,因为 UITableView 扩展了 UIScrollView (和他的委托方法)。
我已经通过将它添加到我的每个视图控制器来“解决”它:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
[self.bookTableView scrollViewDidEndDragging:scrollView willDecelerate:decelerate];
}
但是在整个应用程序的许多地方都有相同的代码块(仅供参考,这只是其中一个,还有更多)并不是很好。你有什么想法我可以解决这个问题吗?