在iOS应用程序中,为什么prepareForSegue在didSelectRowAtIndexPath之前发生

JJW*_*JJW 13 iphone ios5

我正在尝试将单元格行为更改为:1)当单元格点击时,使用复选标记将单元格标记为完成2)当点击详细信息公开附件按钮时,执行Segue.3)在tableView中:didSelectRowAtIndexPath:我有:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    AWDelivery *delivery = [self.fetchedResultsController objectAtIndexPath:indexPath];
    [delivery toggleDelivered: delivery];
    [self configureCheckmarkForCell:cell withDelivery:delivery];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    if (debugging) NSLog(@"[%s] [%d]", __PRETTY_FUNCTION__, __LINE__);
}
Run Code Online (Sandbox Code Playgroud)

deselectRowAtIndexPath应该绕过segue,但事实并非如此.

NSLogs:a)于2012-04-29 18:50:00.848交付[3148:fb03] [ - [DeliveryTVC prepareForSegue:sender:]] [168] b)于2012-04-29 18:50:01.245交付[3148 :fb03] [ - [DeliveryTVC tableView:didSelectRowAtIndexPath:]] [93]

请注意'didSelect'发生在'prepareForSegue'之后.

任何提示都将是最受欢迎的.

dan*_*anh 14

您是否将详细信息附加到表格视图单元格?相反,尝试在两个视图控制器之间拖动它(包含表和您想要它的那个).

然后手动执行([self performSegueWithIdentifier:@"MySegue"];)tableView:accessoryButtonTappedForRowWithIndexPath:.


swa*_*tus 6

如果你需要在prepareForSegue中获取当前的tableview选项,你可以通过访问UITableViewController的tableView ivar来获取它;

[self tableView] indexPathForSelectedRow]
Run Code Online (Sandbox Code Playgroud)