支持 UITableView 的自定义 UIScrollView
Posted
技术标签:
【中文标题】支持 UITableView 的自定义 UIScrollView【英文标题】:Custom UIScrollView backing a UITableView 【发布时间】:2015-01-09 23:58:15 【问题描述】:我想在几个不同的地方使用一些自定义滚动行为。假设滚动视图应该提供以下三种行为:
在用户滚动时更改颜色,具体取决于内容偏移量。 公开显示在背景中的 imageView 属性。消费者可以设置图片。 在内容偏移量超过某个固定值时通知代理。我有一个使用UIScrollView
子类的工作实现。但现在我想在UITableView
中使用相同的功能,这当然是由标准UIScrollView
支持的。
如何在两个地方重复使用相同的代码?到目前为止,我最接近的是关闭 tableview 的滚动并强制其高度始终匹配其内容大小。然后我可以像任何其他视图一样将它添加到我的自定义滚动视图中。这可行,但有一些缺点。
我可以使用类别来实现吗?协议?我可以以某种方式“换掉”UITableView
的滚动视图吗?还有其他我可能忽略的技术吗?
【问题讨论】:
【参考方案1】:我有一个想法给你。
为实现 UIScrollViewDelegate 方法创建一个类 - 假设(当然选择更好的名称...):
@interface ScrollViewDelegateHelper : NSObject <UIScrollViewDelegate>
创建一个类来实现所有 UITableViewDelegate 方法(当然还有 dataSource 方法,如果你喜欢的话),比方说:
@interface TableViewDelegateHelper : ScrollViewDelegateHelper <UITableViewDataSource, UITableViewDelegate>
TableViewDelegateHelper 扩展了ScrollViewDelegateHelper,所以所有的滚动事件都可以写在一个文件中。 您可以在这两种情况下使用 ScrollViewDelegateHelper,一次作为自定义 UIScrollView 的委托,第二次作为 TableView 委托的父级
希望对您有所帮助。
【讨论】:
以上是关于支持 UITableView 的自定义 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionViewCell 内带有 UITableView 的自定义单元格