Ios 视图将出现&;关闭ViewController时,ViewDid显示正在启动
我正在制作一个iOS应用程序,我想在其中呈现如下页面流: 基本上,我想要实现的是有这样的页面流:Ios 视图将出现&;关闭ViewController时,ViewDid显示正在启动,ios,uiviewcontroller,navigation,xamarin,Ios,Uiviewcontroller,Navigation,Xamarin,我正在制作一个iOS应用程序,我想在其中呈现如下页面流: 基本上,我想要实现的是有这样的页面流: PageA PageB PageC PageD, dismiss back to: PageC PageD PageE, dismiss back to: PageA (starting point, start over again) 我正在使用ShowViewcontroller显示页面(模式),并使用DismissViewcontroller关闭页面 根据苹果的文档,如果我在堆栈的早期解雇V
PageA
PageB
PageC
PageD, dismiss back to:
PageC
PageD
PageE, dismiss back to:
PageA (starting point, start over again)
我正在使用ShowViewcontroller
显示页面(模式),并使用DismissViewcontroller
关闭页面
根据苹果的文档,如果我在堆栈的早期解雇VC,所有后续的UIViewCOntroller
也会被解雇()
但是,我发现viewwillbeen
和viewdidebeen
在UIViewController
上被激发,即使它们没有出现,也会被解除(例如,在本例中,当从PageE
取消返回PageA
时,视图将出现在PageD
上调用,PageC
,PageB
)
我觉得这似乎不合逻辑。有人能解释为什么会发生这种情况吗?如果我走错了路,也许可以纠正我
我正在使用Xamarin.iOS
苹果文档:
如果连续呈现多个视图控制器,从而构建呈现的视图控制器的堆栈,则在堆栈中较低的视图控制器上调用此方法将取消其直接子视图控制器以及堆栈中该子视图控制器上方的所有视图控制器。发生此情况时,仅以动画方式取消最顶部的视图;只需从堆栈中删除任何中间视图控制器。使用其模式转换样式(可能与堆栈中较低的其他视图控制器所使用的样式不同)即可取消最顶部的视图。视图控制器使用堆栈。每当新的视图控制器(任何类型)出现时添加到堆栈中时,您将失去对ViewController的越来越多的控制(尤其是在对ViewController使用模式时)。因此,假设堆栈中有5个ViewController(a、B、C、D、E,如您的示例所示),并假设它们是按照所述的顺序创建的,为了从ViewController E返回到ViewController A,您必须遍历整个堆栈。这意味着需要先显示以您的方式显示的每个ViewController,才能取消显示is(因为您已经显示了ViewController E,所以这里不会出现这种情况)
我希望这对你有帮助。祝你好运
爱和问候,
Björn使用modal有什么具体要求吗?我想你应该使用导航控制器来获得这个流程。modal不是用来导航的,它是用来弹出一些信息的。@SharonNathaniel-没有具体要求。但是我只是使用modal来避免删除导航栏等(应该不可能导航回来)。实际上,这些页面是不相关的。通常使用什么习惯用法在不相关的页面之间导航,有过渡,但不可能向后导航等。您可以使用导航控制器,并在不希望用户返回的特定视图控制器上隐藏后退按钮。以及何时要返回到根view控制器只是PoptorootView控制器。我也有这个问题。我的解决方法是使用一个标志来控制这个行为