在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在滚动速度过快时会混合数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)