Iphone UITableViewCell图像视图重复
我对iphone开发相当陌生,我正在尝试使用UITableViewCell创建自己的“邀请您的朋友”系统。我已经检查了其他帖子,但我不知道如何修复它。我现在遇到的一个问题是,我的UITableViewCell附件正在重复。例如当我单击此复选框时 这里是我的项目链接,如果有人决定看它 如果向下滚动,其他复选框也会被标记 我想知道我怎样才能解决这个问题 这是我的密码Iphone UITableViewCell图像视图重复,iphone,xcode,uitableview,accessory,Iphone,Xcode,Uitableview,Accessory,我对iphone开发相当陌生,我正在尝试使用UITableViewCell创建自己的“邀请您的朋友”系统。我已经检查了其他帖子,但我不知道如何修复它。我现在遇到的一个问题是,我的UITableViewCell附件正在重复。例如当我单击此复选框时 这里是我的项目链接,如果有人决定看它 如果向下滚动,其他复选框也会被标记 我想知道我怎样才能解决这个问题 这是我的密码 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSec
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
switch (section) {
case 0:
return 4;
break;
case 1:
return [aArray count];
break;
case 2:
return [bArray count];
break;
case 3:
return [cArray count];
break;
case 4:
return [dArray count];
break;
case 5:
return [eArray count];
break;
case 6:
return [fArray count];
break;
case 7:
return [gArray count];
break;
case 8:
return [hArray count];
break;
case 9:
return [iArray count];
break;
case 10:
return [jArray count];
break;
case 11:
return [kArray count];
break;
case 12:
return [lArray count];
break;
case 13:
return [mArray count];
break;
case 14:
return [nArray count];
break;
case 15:
return [oArray count];
break;
case 16:
return [pArray count];
break;
case 17:
return [qArray count];
break;
case 18:
return [rArray count];
break;
case 19:
return [sArray count];
break;
case 20:
return [tArray count];
break;
case 21:
return [uArray count];
break;
case 22:
return [vArray count];
break;
case 23:
return [wArray count];
break;
case 24:
return [xArray count];
break;
case 25:
return [yArray count];
break;
case 26:
return [zArray count];
break;
}}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = nil;
if([tableView isEqual:self.myTableView]){
static NSString *TableViewIdentifier = @"MyCells";
cell = [tableView dequeueReusableCellWithIdentifier:TableViewIdentifier];
if(cell == nil){
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TableViewIdentifier];
}
NSString *group;
NSUInteger row = [indexPath row];
cell.selectionStyle = UITableViewCellSelectionStyleGray;
if([selectedRowsArray containsObject:[content objectAtIndex:row]]){
cell.imageView.image = [UIImage imageNamed:@"selected@2x.png"];
}else {
cell.imageView.image = [UIImage imageNamed:@"unselected@2x.png"];
}
cell.imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleChecking:)];
[cell.imageView addGestureRecognizer:tap];
switch (indexPath.section) {
case 0:
group = [suggestedPeople objectAtIndex:row];
cell.textLabel.text = group;
break;
case 1:
group = [aArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 2:
group = [bArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 3:
group = [cArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 4:
group = [dArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 5:
group = [eArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 6:
group = [fArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 7:
group = [gArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 8:
group = [hArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 9:
group = [iArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 10:
group = [jArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 11:
group = [kArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 12:
group = [lArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 13:
group = [mArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 14:
group = [nArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 15:
group = [oArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 16:
group = [pArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 17:
group = [qArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 18:
group = [rArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 19:
group = [sArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 20:
group = [tArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 21:
group = [uArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 22:
group = [vArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 23:
group = [wArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 24:
group = [xArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 25:
group = [yArray objectAtIndex:row];
cell.textLabel.text = group;
break;
case 26:
group = [zArray objectAtIndex:row];
cell.textLabel.text = group;
break;
}
}
return cell;
}每次需要删除子视图时设置单元格时/将其设置为零。这是来自“早期”单元格的复选标记,因为它被表视图重用 这是因为您仅存储
行
,以确定是否选中单元格。由于每个节在索引0/1处都有一个单元格,因此这并不能像您所希望的那样工作
if([selectedRowsArray containsObject:[content objectAtIndex:row]]){
cell.imageView.image = [UIImage imageNamed:@"selected@2x.png"];
}else {
cell.imageView.image = [UIImage imageNamed:@"unselected@2x.png"];
}
将其替换为:(假设您有一个NSMutableSet
作为属性self.selectedIndexPaths
)
如果您使用分组样式,请确保正确处理索引,因为每个部分都有相同类型的索引。也就是说,如果您有2个部分和3行,那么在这两个部分中,index.row将为每个部分提供0,1,2 此外,你还必须处理单元格的可重用属性,即它只创建当前可访问的单元格,然后在你刷新表格时再次重用这些单元格,因此,当你回滚到你以前检查过的单元格时,尽管它已被选中,但仍将显示为未选中
希望这能帮助您为我的英语不好感到抱歉,因为它不是我的母语:)苹果不建议将分组表视图样式与右侧显示的索引结合使用。在我看来,他们是对的,因为它看起来很难看。你的数组
content
代表什么,它与数组aArray
,bArray
,cArray
,等等有什么关系?“content”是一个数组,里面充满了地址簿的名/姓属性,aArray,bArray,cArray,etc.是以该字母开头的姓氏列表//如果(cell==nil)推荐这一行……他每次调用cellforindexath:
时都显式设置单元格现有imageView.image
属性的值。如果他添加自己的imageView,我同意问题可能是他需要在重新使用电池时删除它,但在这种情况下,我不认为是这样。啊。实际上,我并没有通读所有的开关之类的东西pdidn对我不起作用,你知道我可以研究的任何示例/开源代码吗?到底什么不起作用?你能分享一下你的整个项目吗。我可以看一下。恐怕我不明白你的代码和你想实现的目标。当我尝试运行你的应用程序时,它崩溃了。另外,只有一个部分填充了单元格。一个部分填充了单元格是什么意思?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
if ([self.selectedIndexPaths containsObject:indexPath])
{
cell.imageView.image = [UIImage imageNamed:@"selected@2x.png"];
}
else
{
cell.imageView.image = [UIImage imageNamed:@"unselected@2x.png"];
}
...
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([self.selectedIndexPaths containsObject:indexPath])
{
[self.selectedIndexPaths addObject:indexPath];
}
else
{
[self.selectedIndexPaths removeObject:indexPath];
}
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
}