我有一个基于导航的应用程序。根视图是项目列表。从这个根视图中,您可以点击表格单元格到项目的详细视图。或者,您可以通过导航栏中的“添加”按钮转到表单视图以创建新项目。
我的问题是,一旦创建了新对象,我怎么能从表单视图跳转到详细视图?
我不想在表单视图的顶部推送详细信息视图,因为我希望根表视图是用户在详细视图中按下“后退”导航按钮后看到的内容。
我尝试了以下内容。它弹出到根视图很好,但在此之后不会推送详细视图..
[context save:&error];
[self.navigationController popToRootViewControllerAnimated:NO];
// display detail view
GoalDetailViewController *detailViewController = [[GoalDetailViewController alloc] initWithNibName:@"GoalDetailViewController" bundle:nil];
// Pass the selected object to the new view controller.
detailViewController.goal = goal;
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
非常感谢任何帮助和方向:)
干杯!
答案 0 :(得分:3)
通常,您将使用以模态方式显示的视图控制器来实现添加按钮。
[self presentModalViewController:modalViewController animated:YES];
表示它出现在屏幕底部(请参阅添加联系人)。然后,当他们按下右上角的完成后,您可以在导航控制器上按下详细视图控制器而不为其设置动画,使后退按钮返回到原始列表视图。
答案 1 :(得分:1)
这不是你在应用中经常看到的东西,但它可以像这样完成:
// Get the current view controller stack.
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
// Instantiate your new detail view controller
GoalDetailViewController *detailViewController = [[GoalDetailViewController alloc] initWithNibName:@"GoalDetailViewController" bundle:nil];
detailViewController.goal = goal;
// Remove the topmost view controller from the stack
[viewControllers removeLastObject];
// Replace it with the new detail view controller
[viewControllers addObject:detailViewController];
// Change the view controller stack
[self.navigationController setViewControllers:viewControllers animated:YES];
// Clean up
[detailViewController release];
你得到的动画究竟是here。