新闻类APP,Cell之间时间标签显示的问题

iOS 码拜 10年前 (2015-05-11) 1104次浏览 0个评论
 

现在做的APP是新闻类的,每一个tableViewCell是一个新闻的数据模型,每一个模型中有一个createAt的时间字段。
要求很简单,就是不同时间的新闻之间,要显示出时间,比如当前这条是5月2号的,下一条是5月3号的,就在这两条之间显示5月3
号的时间标签(有点啰嗦)。
我现在的逻辑是,每一个cell的最下方都有时间标签,在向cell中设置数据的时候传一个标记来判断时间便签的显示与否。
具体的实施是,在cellForRow代理方法中,获得当前indexPath.row的数据模型currModel,再获得indexPath.row + 1的下一条数据
模型nextModel,比较这两个模型的createAt字段是否相同,如果不同,就当前currModel下方的时间标签.hidden置为NO,就是显
示,而且要显示下一条数据的时间,我把data[indexPath.row + 1]传过去,heightForRow中做同样的判断,返回不同的高度。

但这样做有问题,就是比如我当前请求回来10条数据,我第十条没法判断是否显示,如果刚好下一次上拉加载请求回来的第十一条数据刚好和第十条时间不同,(而且服务器每次返回来的条数还不一定)我就不能正确的显示时间了。

当时想过当前这个模型,和上一条比较,但是想到这样的话在cellForRow中执行起来比较麻烦,实在是没有好办法了,新手求前辈指点一二,说的可能有点啰嗦。

80分
如果是我的的话,我还是会在数据源上做手脚,每次获取到数据的时候,就执行一个类似于构建数据源的方法,数据源看上去就像这样:
{
    <0x12345678 NewsModel>,
    <0x12345678 NewsModel>,
    <0x12345678 NewsModel>,
    <0x12345678 DateModel>, // 日期
    <0x12345678 NewsModel>,
    <0x12345678 NewsModel>
}
Cell 用两种 identifier,一种显示新闻,一种显示日期。
再把用于显示 DateModel 的 Cell 设置为不可选的,这样就只需要在 heightForRow 和 cellForRow 里单独对 DateModel 进行判断了。
业务逻辑部分只有构建数据源处处理。
引用 1 楼 zhangao0086 的回复:

如果是我的的话,我还是会在数据源上做手脚,每次获取到数据的时候,就执行一个类似于构建数据源的方法,数据源看上去就像这样:
{
    <0x12345678 NewsModel>,
    <0x12345678 NewsModel>,
    <0x12345678 NewsModel>,
    <0x12345678 DateModel>, // 日期
    <0x12345678 NewsModel>,
    <0x12345678 NewsModel>
}
Cell 用两种 identifier,一种显示新闻,一种显示日期。
再把用于显示 DateModel 的 Cell 设置为不可选的,这样就只需要在 heightForRow 和 cellForRow 里单独对 DateModel 进行判断了。
业务逻辑部分只有构建数据源处处理。

谢谢版主,这种办法确实没用过,明天试试版主这个方法,前期选错方案,后期执行不下去,真的好蛋疼


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明新闻类APP,Cell之间时间标签显示的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!