tableView:didSelectRowAtIndexPath / popViewControllerAnimated不起作用

时间:2014-05-11 11:44:41

标签: ios objective-c uitableview

当我使用

  

tableView:didSelectRowAtIndexPath / popViewControllerAnimated

它不起作用。我通过另一个视图推动视图控制器,但是当我选择一行时,它以灰色突出显示而不是立即弹出到原始视图控制器。但当我点击另一行时,它会选择我点击的第一行,然后返回原始视图控制器。

以下是代码:

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    cell.accessoryType = UITableViewCellAccessoryCheckmark;

    NSArray *allTypes = [[ItemStore sharedStore] allTypes];
    NSManagedObject *raum = allTypes[indexPath.row];
    self.an.leben = raum;

    [self.navigationController popViewControllerAnimated:YES];
}

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

didDeselectRowAtIndexPath替换为didSelectRowAtIndexPath

您编写的委托方法是didDeselectRowAtIndexPath而不是didSelectRowAtIndexPath。 根据apple,tableView:didDeselectRowAtIndexPath: 告诉代理人指定的行现在是取消选择

的tableView:didSelectRowAtIndexPath方法: 告诉代理人指定的行现在是选中

所以,正在发生的事情是,当你点击一行时,它会被选中并变为灰色,然后当你点击相同或任何其他行时,前一个被取消选择,因为一次只选择了一行,因此调用此方法以使用先前的抽头行打开下一个视图控制器。

答案 1 :(得分:0)

tableView:didDeselectRowAtIndexPath更改为tableView:didSelectRowAtIndexPath