在 UiTableView didSelectRowAtIndexPath 更新错误的 Cell
In UiTableView didSelectRowAtIndexPath updating wrong Cell
在我的 TableView 中,didSelectRowAtIndexPath 仅更新每个单元格上 table 的最后一个可见单元格是选择。
示例代码如下:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView isEqual:subcategoryTV])
{
selCell=(MDTableViewCell *)[subcategoryTV cellForRowAtIndexPath:indexPath ];
if ([checkButton.titleLabel.text isEqualToString:@"✓"])
{
checkButton.backgroundColor=[UIColor clearColor] ;
[checkButton setTitle:resetTitle forState:UIControlStateNormal];
[checkButton setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
checkButton.layer.borderColor = [UIColor lightGrayColor].CGColor;
}
else
{
resetTitle=checkButton.titleLabel.text;
NSLog(@"%@",resetTitle);
checkButton.backgroundColor=[UIColor colorWithRed:1 green:0.839 blue:0.314 alpha:1] ;
[checkButton setTitle:@"✓" forState:UIControlStateNormal];
[checkButton.titleLabel setFont:[UIFont fontWithName:@"Futura" size:25]];
[checkButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
checkButton.layer.borderColor = [UIColor clearColor].CGColor;
}
if (costLabel.hidden==YES) {
costLabel.hidden=NO;
}
else
{
costLabel.hidden=YES;
}
}
}
您无论如何都不应该从单元格中查询数据,您应该检查您的模型以决定要做什么。当用户更改任何行或按钮时,您更新模型,然后使用它来更新视图。这是正确的做法。
你这里的具体问题是你的错误方法是你在选定的索引路径上获取单元格然后不使用它。您应该从单元格中获取按钮和标签。
在我的 TableView 中,didSelectRowAtIndexPath 仅更新每个单元格上 table 的最后一个可见单元格是选择。
示例代码如下:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView isEqual:subcategoryTV])
{
selCell=(MDTableViewCell *)[subcategoryTV cellForRowAtIndexPath:indexPath ];
if ([checkButton.titleLabel.text isEqualToString:@"✓"])
{
checkButton.backgroundColor=[UIColor clearColor] ;
[checkButton setTitle:resetTitle forState:UIControlStateNormal];
[checkButton setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
checkButton.layer.borderColor = [UIColor lightGrayColor].CGColor;
}
else
{
resetTitle=checkButton.titleLabel.text;
NSLog(@"%@",resetTitle);
checkButton.backgroundColor=[UIColor colorWithRed:1 green:0.839 blue:0.314 alpha:1] ;
[checkButton setTitle:@"✓" forState:UIControlStateNormal];
[checkButton.titleLabel setFont:[UIFont fontWithName:@"Futura" size:25]];
[checkButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
checkButton.layer.borderColor = [UIColor clearColor].CGColor;
}
if (costLabel.hidden==YES) {
costLabel.hidden=NO;
}
else
{
costLabel.hidden=YES;
}
}
}
您无论如何都不应该从单元格中查询数据,您应该检查您的模型以决定要做什么。当用户更改任何行或按钮时,您更新模型,然后使用它来更新视图。这是正确的做法。
你这里的具体问题是你的错误方法是你在选定的索引路径上获取单元格然后不使用它。您应该从单元格中获取按钮和标签。