做这个:
[[self navigationController] dismissModalViewControllerAnimated:YES];
这将使您回到模态显示导航控制器的 VC。在那之后更远的地方取决于你如何在导航控制器之前推送那些“少数视图”。
编辑- 解释到最深的根源......
听起来那些“少数视图”在另一个底层导航控制器的堆栈上。这可能有点棘手,因为在该堆栈中返回更远的干净方法是让底层导航控制器弹出到它自己的根目录。但是它怎么知道它上面的模态VC已经完成了呢?
让我们称做第二个导航控制器 VC_a 的模态表示的视图控制器。它是一个模态呈现的导航控制器,其最顶层的 VC 是 VC_b。当 VC_b 模态关闭自身时,VC_a 如何知道弹出到它的导航根目录?
好的答案(通常)是 VC_b 出于某种原因决定自行解散 - 您的应用程序/模型中的某些条件已更改以使其决定完成。
我们也希望 VC_a 检测到这种情况。当 VC_b 被解雇,并且 VC_a 收到 viewWillAppear 消息,因为它即将被揭露:
// VC_a.m
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (/* some app condition that's true when VC_b is done */) {
// I must be appearing because VC_b is done, and I'm being uncovered
// That means I'm done, too. So pop...
[self.navigationController popToRootViewControllerAnimated:NO];
} else {
// I must be appearing for the normal reason, because I was just pushed onto the stack
}
}