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:nil
,sender:self
(vc)和sender:cell
(tablecell)
直接使用showOldOrder
segue直接从uitableviewcell
到下一个vc而不使用didSelectRow
...同样的结果
- showOldOrder
是正确配置的推送信号
-tablecell标识符在vc和storyboard中匹配。
答案 0 :(得分:3)
您使用错误的方法而不是您的方法使用以下方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
您缺少“发件人”,这就是您的方法未被调用的原因。
可以从多个来源触发细分,您可以使用segue和sender参数中的信息来消除应用中不同逻辑路径之间的歧义Check this