如何在使用Storyboard解除模态视图控制器之前推送viewController?

Spa*_*het 7 objective-c uinavigationcontroller modalviewcontroller ios uistoryboard

在为我的一个项目试用故事板时,我遇到了一些我没有很好解决方案的东西;

我有一个基于导航的应用程序,它显示了一个UITableViewController.tableView使用用户创建的元素填充.点击元素单元格会调出详细视图控制器.用户可以通过点击tableView中的按钮来创建新元素.这将打开一个模态视图,它将处理创建.

现在,当用户完成创建元素并解除模态视图控制器时,我希望用户看到相应的新细节视图控制器而不是tableview.但我无法弄清楚如何在故事板中实现这一目标.

有没有人有这个好的模式?

现在的情况

TableView --(tap create)--> creation modal view --(finish creating)--> TableView
Run Code Online (Sandbox Code Playgroud)

应该

TableView --(tap create)--> creation modal view --(finish creating)--> detail view
Run Code Online (Sandbox Code Playgroud)

Spa*_*het 0

我能想到的最好的模式与代码中的旧模式相同。

将属性添加(nonatomic, weak) UINavigationController *sourceNavigationController到模式视图控制器。当需要关闭模态视图控制器时,添加以下代码:

DetailViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
detailViewController.element = newlyCreatedElement;
[[self sourceNavigationController] pushViewController:detailViewController animated:NO];
Run Code Online (Sandbox Code Playgroud)

为了确保设置正确,请在TableViewsourceNavigationController中添加以下代码:prepareForSegue:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"newElementSegue"]) {
        [[segue destinationViewController] setSourceNavigationController:self.navigationController];
    }
}
Run Code Online (Sandbox Code Playgroud)