xcode从嵌套视图打开tableview

xcode从嵌套视图打开tableview,xcode,uitableview,uinavigationcontroller,nested,Xcode,Uitableview,Uinavigationcontroller,Nested,我已经构建了一个应用程序,它用许多项目填充tableview。您可以单击某个项目,它将打开该项目的详细视图。然后,您可以单击一个按钮,打开另一个显示详细项目细节的视图。我还有一些嵌套视图,它们会一直显示,直到您看到完成视图为止。我想要一个按钮点击弹出我直接回到tableview,但还没有找到一个方法。我尝试了以下想法: 第一个,只会关闭到上一个屏幕: [自我解除视图控制器激活:是完成:无] 第二个根本不起作用: [self.navigationController-popToRootViewCo

我已经构建了一个应用程序,它用许多项目填充tableview。您可以单击某个项目,它将打开该项目的详细视图。然后,您可以单击一个按钮,打开另一个显示详细项目细节的视图。我还有一些嵌套视图,它们会一直显示,直到您看到完成视图为止。我想要一个按钮点击弹出我直接回到tableview,但还没有找到一个方法。我尝试了以下想法:

第一个,只会关闭到上一个屏幕: [自我解除视图控制器激活:是完成:无]

第二个根本不起作用: [self.navigationController-popToRootViewControllerAnimated:NO]

第三个什么都不做: WorkOrderTableViewController*pushTable=[WorkOrderTableViewController alloc]init]; [UINavigationController pushViewController:pushTable已设置动画:是]

第四个什么都不做: WorkOrderTableViewController*pushTable=[WorkOrderTableViewController alloc]init]; [self.navigationController pushViewController:pushTable动画:是]

我甚至试着从以前的屏幕/视图中调用segues。还尝试了以前的视图控制器中的类


有没有办法直接跳回表视图?如果是,如何处理?

关于您上述评论中的代码

使用alloc时,您正在创建一个新对象。您需要的是返回到已经存在的视图控制器。是否将WorkOrderTableViewController的原始实例保存到某个应用程序代理?自定义父控制器?这样你就可以回去了

例如,您可以:

创建UINavigationController的子类,该子类通过弹出到正确的视图控制器来响应通知。你需要自己定义正确的含义

- (void)viewDidLoad {
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(popToTable) name:kReturnToTable object:nil];
}

- (void)popToTable {
    UIViewController *target = nil;
    for (UIViewController *controller in [self viewControllers]) {
        if ([controller isKindOfClass:[UITableViewController class]]) {
            target = controller;
            break;
        }
    }
    if (target) {
        [self popToViewController:target animated:YES];
    } else {
        NSLog(@"Error -- couldn't find my controller in %@", [self viewControllers]);
    }
}
使最终控制器的按钮张贴该通知。通知名称在最后一个控制器的头文件中定义

- (IBAction)backToTable:(id)sender {
    [[NSNotificationCenter defaultCenter] postNotificationName:kReturnToTable object:nil];
}

关于popToViewController:animated:?我尝试了:WorkOrderTableViewController*pushTable=[[WorkOrderTableViewController alloc]init];[self.navigationController popToViewController:pushTable动画:是];但它也没起什么作用。这里有更多的解释,因为这可能是我糟糕的编码技能。进入表项的详细视图后,单击一个按钮,该按钮将推到一个服务屏幕,其中包含要输入的信息。有一个“继续”按钮,可按到下一个屏幕,在那里可以输入更多信息。另一个按钮将它带到最后一个屏幕,在那里我有完整的按钮。有帮助吗?