我正在尝试创建一个UITableView,它为选定的单元格添加一个复选标记,会发生的是它确实添加了复选标记但不是立即,它在我选择不同的行时显示。知道我怎么能让它瞬间完成?这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Contact";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSLog(@"%@", [[self.contacts objectAtIndex:indexPath.row] valueForKeyPath:@"TwitterFriend.screen_name"]);
cell.textLabel.text = [[self.contacts objectAtIndex:indexPath.row] valueForKeyPath:@"TwitterFriend.screen_name"];
if ([self.selectedContacts containsObject:[self.contacts objectAtIndex:indexPath.row]]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.selectedContacts addObject:[self.contacts objectAtIndex:indexPath.row]];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
答案 0 :(得分:2)
您似乎在tableView:didDeselectRowAtIndexPath
中执行逻辑,但默认情况下,在单元格选择更改之前不会调用此方法。如果您将其放在tableView:didSelectRowAtIndexPath
中(请注意名称略有不同),您只需点击单元格即可获得回调,并且附件视图应立即显示。