7

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

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

现在,当用户完成创建元素并关闭模态视图控制器时,我希望用户看到相应的新细节视图控制器而不是表格视图。但我无法弄清楚如何在情节提要中实现这一点。

有没有人有一个很好的模式?

现在的情况

TableView --(tap create)--> creation modal view --(finish creating)--> TableView

应该

TableView --(tap create)--> creation modal view --(finish creating)--> detail view
4

2 回答 2

1

您可以将创建视图控制器放在导航控制器中,并将创建视图控制器链接到详细视图控制器以及推送 segue。当您完成创建数据时,它将定向到详细视图控制器的实例。

如果您想从详细信息视图直接导航回表格视图,您可以向详细信息视图控制器添加一个属性,例如@property (nonatomic) BOOL cameFromCreationViewController;. prepareForSegue:您可以在源视图控制器中设置此属性。在详细信息视图中制作您自己的后退按钮,当它被点击时,您可以这样做:

if(self.cameFromCreationViewController){
     [self.presentingViewController dismissViewController];
}
else {
     [self.navigationController popViewController]
}
于 2013-05-05T12:56:50.770 回答
0

我能想出的最佳模式与代码中的旧模式相同。

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

DetailViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
detailViewController.element = newlyCreatedElement;
[[self sourceNavigationController] pushViewController:detailViewController animated:NO];

并确保sourceNavigationController正确设置,prepareForSegue:在 TableView 中添加以下代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"newElementSegue"]) {
        [[segue destinationViewController] setSourceNavigationController:self.navigationController];
    }
}
于 2013-05-05T11:04:43.937 回答