iOS:UITableView在滚动速度过快时会混合数据

iOS:UITableView在滚动速度过快时会混合数据,第1张

概述我已经将UITableViewCell子类化为它添加自定义外观.在MYTableViewCell的init级别,我添加了4个子视图:UI ImageView和三个UILabel.所有4个子视图都分配了不同的标记. 在cellForRowAtIndexPath方法中,我要么创建一个新单元格,如果它最初不可用,要么重用可用的单元格并将正确的文本分配给ui标签. 我遇到的问题是,如果我尝试超快速滚动,那 我已经将UItableVIEwCell子类化为它添加自定义外观.在MYtableVIEwCell的init级别,我添加了4个子视图:UI ImageVIEw和三个UILabel.所有4个子视图都分配了不同的标记.

在cellForRowAtIndexPath方法中,我要么创建一个新单元格,如果它最初不可用,要么重用可用的单元格并将正确的文本分配给ui标签.

我遇到的问题是,如果我尝试超快速滚动,那么数据会搞砸,但是如果我上下滚动得更慢,那么一切正常.

有什么想法吗??

以下是代码:

- (MytableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath {static Nsstring *CellIDentifIEr = @"itemListtableVIEwCell";MytableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:CellIDentifIEr];displayableEntity *displayableEntity = [self.fetchedResultsController objectAtIndexPath:indexPath];if( ! cell ) {    cell = [[MytableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:CellIDentifIEr];    [self tableVIEw:tableVIEw appearanceForCell:cell withEntity:displayableEntity];} else {    UIImageVIEw *imageVIEw = (UIImageVIEw *) [cell vIEwWithTag:IMAGEVIEW_TAG];    imageVIEw.image = [UIImage imagenamed:displayableEntity.displayImagename];    UILabel *TitleLabel = (UILabel *) [cell vIEwWithTag:TitleVIEW_TAG];    TitleLabel.text = displayableEntity.entityname;    UILabel *itemDescription = (UILabel *) [cell vIEwWithTag:DESCRIPTION_TAG];    itemDescription.text = displayableEntity.entityDesctiption;  }}// some code removed to make it brIEf- (voID)tableVIEw:(UItableVIEw *)tableVIEw appearanceForCell:(MytableVIEwCell *)cell withEntity:(displayableEntity *)entity {    // cell image vIEw    UIImageVIEw *cellimageVIEw = [[UIImageVIEw alloc] initWithImage:[UIImage imagenamed:[entity displayImagename]]];    [cellimageVIEw setTag:IMAGEVIEW_TAG];    [cell addSubvIEw:cellimageVIEw];    // adding entity name label        UILabel *itemTitlename = [self itemTitlenameLabelWithFrame:itemnameLabelRect itemname:[entity entityname]];    [itemTitlename setTag:TitleVIEW_TAG];    [cell addSubvIEw:itemTitlename];    // adding 'assigned to' label right under the item name label    UILabel *itemDescriptionLabel = [self itemDescriptionLabelWithFrame:descriptionLabelFrame itemDescription:[entity entityDesctiption]];    [itemDescriptionLabel setTag:DESCRIPTION_TAG];    [cell addSubvIEw:itemDescriptionLabel];}
解决方法 我在tableVIEw中看到了一些麻烦:cellForRowAtIndexPath:logic
它应该是:

>出列单元格
>如果单元格无法出列 – 请创建新单元格
>设置所有单元格属性

我的意思是这样的:

- (MytableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath {    static Nsstring *CellIDentifIEr = @"itemListtableVIEwCell";    UItableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:CellIDentifIEr];    if (cell == nil) {        cell = [UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:CellIDentifIEr];    } // <-- Note there is no else,we should reset propertIEs in both cases    NSManagedobject *managedobject = [_fetchedResultsController objectAtIndexPath:indexPath];    cell.textLabel.text = [managedobject valueForKey:@"text"];    cell.imageVIEw.image = [managedobject valueForKey:@"image"];    return cell;}
总结

以上是内存溢出为你收集整理的iOS:UITableView在滚动速度过快时会混合数据全部内容,希望文章能够帮你解决iOS:UITableView在滚动速度过快时会混合数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1038301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存