TableView 使用

tableView 使用总结

  • 字典的 key enumerator 的使用

  • tableViewCell 的 selected 方法可以监听cell 的选中, 使用selected 参数

  • 网络慢时点击左边cell右边数据不能及时刷新, 用户看到的还是上一个cell显示的数据

    • 解决办法: 在网络加载之前就reload数据,让显示空白
  • 点击左边的cell时 上拉加载更多控件的显示和隐藏逻辑

    • 解决办法: 在每次刷新右边数据时,控制footer的显示
  • 在numberOfRowsInSection方法中控制

  • 每次点击cell之前要结束上一个没有刷新完的,防止奔溃

  • 加载更多时

    在加载第一页时设置currentPage为1,在加载更多的逻辑中 ++currentPage
    点击cell加载时上一个加载更多的网络数据还没有回来,在当前请求之前结束掉所有的网络请求
    停止之后的刷新控件状态会有错误,没有更多还是还可以加载状态不确定
    在点击左边cell后刷新右边的之前需要检查右边tableView 的footer的状态
    下拉刷新

  • 第一次下拉刷新之后,第二次下拉刷新,将数据添加到数组中会导致两次数据重复

    • 解决办法:清除以前的所有数据
  • 下拉刷新完毕后结束刷新后需要检查footer的状态

  • 网络慢时连续点击cell,连发多个请求成功回调时数据显示错乱,或者是数据已经回来了但是还是显示上一个请求正在请求。。。

    • 解决办法:点击左边某个类别时,结束所有的刷新(上拉和下拉)
  • 连续点击发送请求

    • 解决办法:保存请求参数, 比较上一次参数和当前参数, 如果 != 直接return,不让进入成功回调解析数据, 失败的时候也是同样 return,不提示用户
  • 控制器正在请求数据时控制器销毁, 导致奔溃

    • 解决办法:在dealloc 中停止所有的操作

cell 的frame 设置

  • cell 之间的间隙以及cell的边距 重写frame 在super 之前设置

    • 设置frame 的x ,width, height 等属性
  • 分页的2种做法

    • 下拉刷新

      page 加载最新的 加载第一页 浪费用户的流量
      加载比当前更新的数据, 需要服务器支持,将当前最新的数据id发送给服务器,服务器加载比当前id还大的数据插入到最前面

    • 上拉加载

      将页码发给服务器

      将最后面的数据的id发给服务器,

      加载比当前id更小的数据