为什么我不能忽略导航堆栈上的上一个视图?

时间:2011-11-19 03:40:32

标签: objective-c ios model-view-controller

这可能会非常明显,但是这里有。我有两个ViewControllers,一个用[+]按钮显示一个人的详细信息,打开另一个管理Person编辑的ViewController。当要删除的人员时,会显示一个警告,如果选择了“确定”,则编辑视图应该消失,并且DetailView也应该消失/转换回PersonsListView(下面的代码中未显示)。

我可以让EditView解散,但我也无法解除DetailView。

感谢任何帮助。

两个ViewControllers:

@implementation PersonDetailViewController
...
- (void)editPerson
{
    PersonDetailEditViewController *editView = [[PersonDetailEditViewController alloc] initWithTenant:self.person];
    [editView setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:editView];
    [self presentModalViewController:navController animated:YES];    
}
...
@end

@implementation PersonDetailEditViewController
...
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1) {
        [Person deletePerson:self.person];
        NSError *error;
        [self.person.managedObjectContext save:&error];
        [[self navigationController] dismissModalViewControllerAnimated:YES];
        // *** HERE I ALSO WANT TO DISMISS THE DETAILVIEW ***
    }
}
...
@end

1 个答案:

答案 0 :(得分:1)

假设PersonDetailViewController出现在导航控制器中,您应该可以通过添加以下行来执行您想要的操作:

[self.navigationController popViewControllerAnimated:YES];