如何在单个函数调用中处理视图的连续推送/弹出

Posted

技术标签:

【中文标题】如何在单个函数调用中处理视图的连续推送/弹出【英文标题】:How to do handle consecutive pushing/popping of View in a single function call 【发布时间】:2013-01-16 09:16:13 【问题描述】:

问题看起来很疯狂,但我遇到了一个问题,我想像这样实施。考虑我目前有一个视图(A)显示,在一种情况下我想弹出视图并显示其他视图,例如(ViewB)而不是 ViewA,所以我所做的是我在 ViewA 类中编写了一个函数来像这样弹出...

 [self.navigationController popViewControllerAnimated:YES];

在我正在推送新视图的函数调用旁边,现在应用程序正在崩溃说..嵌套推送可能会损坏您的导航控制器......

我在这里做错了什么...我们不能立即弹出并推送...如何处理这种情况..

谢谢。

【问题讨论】:

发布一些代码,上面的东西.. 如果你想立即弹出并推送,只需设置 popViewControllerAnimated:NO ...或者等到动画结束... @GuoLuchuan 我试过没有动画,但现在在我设置标签文本的 viewwillappear 方法中崩溃了。 @Newbee 试试 viewDidAppear 【参考方案1】:

您可以尝试以模态方式呈现您的观点并忽略它。但是,如果您想使用 push 和 pop 来执行此操作,则可以执行以下操作: 在您的视图 A 中弹出视图并设置一些可以在前一个视图控制器中访问的标志(即视图 A 被推送的视图)。 接下来在前一个视图的 viewWillAppear 中检查这个标志并推送视图 B。

希望这会有所帮助。

【讨论】:

类基只弹出A并推B。为什么我需要flag? 你不想每次在基类中调用 viewWillAppear 时都推 B,对吧?【参考方案2】:

如果你想立即弹出和推送,只需设置 popViewControllerAnimated:NO – 郭陆川

【讨论】:

以上是关于如何在单个函数调用中处理视图的连续推送/弹出的主要内容,如果未能解决你的问题,请参考以下文章

在动画推送和弹出时,导航项中带有搜索栏的连续视图控制器会导致视图模糊[重复]

C++ 函数调用与堆栈上推送/弹出的新块

函数调用约定

函数返回时发生了啥

几种调用约定

如何在 eax 和 esi 中调用带有参数的函数。 GCC C++