【问题标题】:Custom UIScrollView backing a UITableView支持 UITableView 的自定义 UIScrollView
【发布时间】:2015-01-09 23:58:15
【问题描述】:

我想在几个不同的地方使用一些自定义滚动行为。假设滚动视图应该提供以下三种行为:

  • 在用户滚动时更改颜色,具体取决于内容偏移量。
  • 公开显示在背景中的 imageView 属性。消费者可以设置图片。
  • 在内容偏移量超过某个固定值时通知代理。

我有一个使用UIScrollView 子类的工作实现。但现在我想在UITableView 中使用相同的功能,这当然是由标准UIScrollView 支持的。

如何在两个地方重复使用相同的代码?到目前为止,我最接近的是关闭 tableview 的滚动并强制其高度始终匹配其内容大小。然后我可以像任何其他视图一样将它添加到我的自定义滚动视图中。这可行,但有一些缺点。

我可以使用类别来实现吗?协议?我可以以某种方式“换掉”UITableView 的滚动视图吗?还有其他我可能忽略的技术吗?

【问题讨论】:

    标签: ios uitableview uiscrollview


    【解决方案1】:

    我有一个想法给你。

    为实现 UIScrollViewDelegate 方法创建一个类 - 假设(当然选择更好的名称...):

    @interface ScrollViewDelegateHelper : NSObject <UIScrollViewDelegate>
    

    创建一个类来实现所有 UITableViewDelegate 方法(当然还有 dataSource 方法,如果你喜欢的话),比方说:

    @interface TableViewDelegateHelper : ScrollViewDelegateHelper <UITableViewDataSource, UITableViewDelegate>
    

    TableViewDelegateHelper 扩展了ScrollViewDelegateHelper,所以所有的滚动事件都可以写在一个文件中。 您可以在这两种情况下使用 ScrollViewDelegateHelper,一次作为自定义 UIScrollView 的委托,第二次作为 TableView 委托的父级

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多