prepareForSegue未在uitableviewcontroller中调用

时间:2016-08-31 06:58:43

标签: ios objective-c iphone uitableview

segue正在进入下一个屏幕,但是没有调用prepareForSegue,我无法在那里找到断点。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    self.selectedObject = [tableData objectAtIndex:indexPath.row];

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    [self performSegueWithIdentifier:@"showOldOrder" sender:cell];

}



- (void)prepareForSegue:(UIStoryboardSegue *)segue :(id)sender

{

    // Make sure your segue name in storyboard is the same as this line

    if ([[segue identifier] isEqualToString:@"showOldOrder"])

    {

        //if you need to pass data to the next controller do it here

        // Get reference to the destination view controller

        OrderViewController *vc = [segue destinationViewController];

        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        // Pass any objects to the view controller here, like...

        vc.Order = [tableData objectAtIndex:indexPath.row];

    }

}

我知道这种不常见的超常见原因,并且已经完成了所有这些:

-tried sender:nilsender:self(vc)和sender:cell(tablecell)

直接使用showOldOrder segue直接从uitableviewcell到下一个vc而不使用didSelectRow ...同样的结果

- showOldOrder是正确配置的推送信号

-tablecell标识符在vc和storyboard中匹配。

1 个答案:

答案 0 :(得分:3)

您使用错误的方法而不是您的方法使用以下方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

您缺少“发件人”,这就是您的方法未被调用的原因。

可以从多个来源触发细分,您可以使用segue和sender参数中的信息来消除应用中不同逻辑路径之间的歧义Check this