当我使用
时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];
}
有什么想法吗?
答案 0 :(得分:3)
将didDeselectRowAtIndexPath
替换为didSelectRowAtIndexPath
。
您编写的委托方法是didDeselectRowAtIndexPath
而不是didSelectRowAtIndexPath
。
根据apple,tableView:didDeselectRowAtIndexPath:
告诉代理人指定的行现在是取消选择。
和
的tableView:didSelectRowAtIndexPath方法: 告诉代理人指定的行现在是选中。
所以,正在发生的事情是,当你点击一行时,它会被选中并变为灰色,然后当你点击相同或任何其他行时,前一个被取消选择,因为一次只选择了一行,因此调用此方法以使用先前的抽头行打开下一个视图控制器。
答案 1 :(得分:0)
将tableView:didDeselectRowAtIndexPath
更改为tableView:didSelectRowAtIndexPath
。