我正在Navigation Controller
使用ViewControllers
,我将importantViewController
设置为RootView
:
UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController: vc];
[self presentModalViewController: navControl animated: YES];
然后,我推动另一个查看FrontViewController
,如下所示:
[self.navigationController pushViewController:vc animated:YES];
在FrontViewController
按下按钮后,另一个视图将被推送ViewA
,但它与另一个ViewController ViewB
的关联方式与此相同:
[self.navigationController pushViewController:vc animated:YES];
(我认为在使用[self.navigationController popViewControllerAnimated:YES];
这是一个例子:
我的问题是,我需要在View A和View B之间导航,然后当我解除其中任何一个时,它将返回FrontViewController
。就像一个孩子的孩子一样。感谢。
答案 0 :(得分:2)
我认为这是针对 dismissModalViewController ,但试试这个,
从View B写这样的代码
[[self parentViewController].navigationController popViewControllerAnimated:YES];
和从视图A你可以写,
[self.navigationController popViewControllerAnimated:YES];
或者你可以使用它,
[self.navigationController popToViewController:frontViewController animated:YES];
<强>更新强>
for (UIViewController *tmpController in [self.navigationController viewControllers])
{
if ([tmpController isKindOfClass:[FrontViewController class]])
{
[self.navigationController popToViewController:tmpController animated:YES];
break;
}
}
这是实现这一目标的最佳解决方案。
在视图A或B上编写此代码。
希望现在有效: - )
答案 1 :(得分:2)
@Prasad G指出了一种方式。但是这个解决方案的问题是你需要frontViewController
的相同对象。您无法通过创建新对象来执行此操作。为了这样,在appdelgate中声明frontViewController
对象,并在从重要的VC推送它时使用
appdelgate.frontViewController = // initialize
// Push it
从视图B返回时
[self.navigationController popToViewController:appdelegate.frontViewController animated:YES];
另一种解决方案是
for (UIViewController *vc in [self.navigationController viewControllers]) {
if ([vc isKindOfClass:[FrontViewController class]]) {
[self.navigationController popToViewController:vc animated:YES];
break;
}
}
使用这种方式,您可以从任何级别的导航堆栈中继续使用任何视图控制器。
如果您有10个视图控制器并且想要继续使用第一个解决方案,那么使用第一个解决方案,因此您必须首先在appdelegate中创建所有10个View Controller的对象。
此代码可能有拼写问题,因为我在这里输入了
希望这会有所帮助:)
<强>更新强>
- &gt;您有impVC作为根视图 - &GT;你推了frontVC - &GT;从那里你推了VC_A - &GT;从那里你想推VC_B
所以你完成了推动并回到VC_A,你可以使用
[self.navigationController popViewControllerAnimated];
现在你可以再次登上VC_B并再次弹出它。要从VC_A转到frontVC,您可以使用popViewControllerAnimated
并从VC_B转到frontVC,您可以使用我提到的for循环。
如果您正在寻找其他任何内容,请说明。如果您仍然面临问题请解释。
答案 2 :(得分:0)
[self.navigationController popToViewController:frontViewController animated:YES];
尝试这样我觉得它会对你有所帮助。
答案 3 :(得分:0)
在FrontViewController中按下按钮后:
ViewA instance
[self.navigationController pushViewController:ViewA animated:YES]
当ViewA发生瑕疵时
[self.navigationController popViewControllerAnimated:YES];
在ViewA中加载ViewB
ViewB instance
[self.navigationController pushViewController:ViewB animated:YES]
在viewB到FrontViewController上
FrontViewController instance
[self.navigationController popToViewController:FrontViewController animated:YES];
返回viewB到viewA
[self.navigationController popViewControllerAnimated:YES];