-3

我的 iPhone 应用程序具有复选标记功能tableview,在 iPhone 6 上一切正常,但在 iPhone 5s 上遇到问题。如果我选​​择行,复选标记功能不起作用。我无法找出确切原因。如何检查问题? 请帮我。这是我的UITableView

委托方法代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   selectedTransIdArray = [NSMutableArray arrayWithArray:userSession.transactionArray];   
NSLog(@"selectedTransIdArray first %@",selectedTransIdArray);

NSString *state = [dataTransArray objectAtIndex:indexPath.row];

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if(cell.accessoryType == UITableViewCellAccessoryNone)
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    [selectedTransIdArray addObject:state];
    userSession.transactionArray = selectedTransIdArray;
}
else
{
    cell.accessoryType = UITableViewCellAccessoryNone;
    [selectedTransIdArray removeObject:state];
    userSession.transactionArray = selectedTransIdArray;
}

NSLog(@"selectedTransIdArray %@",selectedTransIdArray);
userSession.transactionArray = selectedTransIdArray;
[[NSUserDefaults standardUserDefaults] setObject:selectedTransIdArray forKey:@"aKey"];
[[NSUserDefaults standardUserDefaults] synchronize];

}

4

2 回答 2

0

我认为您正在检查的情况与您预期的不同。检查单元格的附件类型不起作用,您可以像这样检查是否state存在selectedTransIdArray

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   selectedTransIdArray = [NSMutableArray arrayWithArray:userSession.transactionArray];   
NSLog(@"selectedTransIdArray first %@",selectedTransIdArray);

NSString *state = [dataTransArray objectAtIndex:indexPath.row];

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if(![selectedTransIdArray containsObject:state])
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    [selectedTransIdArray addObject:state];
}
else
{
    cell.accessoryType = UITableViewCellAccessoryNone;
    [selectedTransIdArray removeObject:state];
}

NSLog(@"selectedTransIdArray %@",selectedTransIdArray);
userSession.transactionArray = selectedTransIdArray;
[[NSUserDefaults standardUserDefaults] setObject:selectedTransIdArray forKey:@"aKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
于 2015-12-22T09:07:25.987 回答
0

您必须编写一个算法来告诉您是否检查了此行数据。并相应地更改检查对象的值atindex值

if (indexPath.row == checked){
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}
于 2015-12-22T07:20:14.270 回答