iphone – UITableView中的选中标记

iphone – UITableView中的选中标记,第1张

概述我创建了一个包含20个单元格的tableview. 当我选择第一行时,它会在上面显示复选标记. 但是当我滚动tableview时,它不仅在tableview单元格上有一个复选标记. 它也显示在另一个细胞上. 这有什么问题? self.dataAry = [NSArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@" 我创建了一个包含20个单元格的tablevIEw.
当我选择第一行时,它会在上面显示复选标记.

但是当我滚动tablevIEw时,它不仅在tablevIEw单元格上有一个复选标记.
它也显示在另一个细胞上.

这有什么问题?

self.dataAry = [NSArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",nil];marks = [NSMutableArray new];for (int i = 0 ; i < [self.dataAry count]; i++) {    [marks addobject:@"NO"];}- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath {static Nsstring *CellIDentifIEr = @"Cell";UItableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:CellIDentifIEr];if (cell == nil) {    cell = [[[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:CellIDentifIEr] autorelease];}cell.textLabel.text = [dataAry objectAtIndex:indexPath.row];if ([[marks objectAtIndex:indexPath.row] isEqualToString:@"YES"]) {    [cell setAccessoryType:UItableVIEwCellAccessorycheckmark];}else {    [cell setAccessoryType:UItableVIEwCellAccessoryNone];}// Configure the cell.return cell;}- (voID)tableVIEw:(UItableVIEw *)tableVIEw dIDSelectRowAtIndexPath:(NSIndexPath *)indexPath{UItableVIEwCell *thisCell = [tableVIEw cellForRowAtIndexPath:indexPath];if ([[tableVIEw cellForRowAtIndexPath:indexPath] accessoryType] == UItableVIEwCellAccessorycheckmark){        [[tableVIEw cellForRowAtIndexPath:indexPath] setAccessoryType:UItableVIEwCellAccessoryNone];        [selectArray removeObject:[self.dataAry objectAtIndex:indexPath.row]];        [marks replaceObjectAtIndex:indexPath.row withObject:@"NO"];    }    else {        [[tableVIEw cellForRowAtIndexPath:indexPath] setAccessoryType:UItableVIEwCellAccessorycheckmark];        [selectArray addobject:[self.dataAry objectAtIndex:indexPath.row]];        [marks replaceObjectAtIndex:indexPath.row withObject:@"YES"];    }}
解决方法 我认为这是由于重新使用经过检查标记的单元格.要纠正这个问题,请写下:

*if ([[marks objectAtIndex:indexPath.row] isEqualToString:@"YES"]) {[cell setAccessoryType:UItableVIEwCellAccessorycheckmark];}else {[cell setAccessoryType:UItableVIEwCellAccessoryNone];*

脱离细胞重用空间.那是后:
 …
    }
    //配置单元格.

就在此之前

*return cell;*
总结

以上是内存溢出为你收集整理的iphone – UITableView中的选中标记全部内容,希望文章能够帮你解决iphone – UITableView中的选中标记所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存