这个问题很长,请耐心等待。
我们知道有两种显示控制器的方法:推送或呈现。还有两个复合控制器:tabbarcontroller 和导航控制器。有了这些可以制作复杂的视图控制器树。现在我有一个像这样的复杂视图控制器树。
T:tabbarcontroller N:navigationcontroller V:普通viewcontroller P:push S:present
所以 PV2 表示 push a viewcontroller ,这是六种组合,但是 PN 是被禁止的,你不能 push a navigation controller。当我研究
T1 --------------------- N1 N2 N3 | | PV1 PV3 | PV2
现在当前的视图控制器是 V2。我想跳到N3并推V3。我写了这段代码:
[self.navigationcontroller popToRootViewControllerAnimated:NO]; // No is important
tabbarcontroller.selectIndex = 2;
[N3 pushViewController:V3];
它有效,但仍然很糟糕,太糟糕了。1:N3必须知道v3,viewcontroller之间的耦合性很强。2:不能在复杂的情况下工作……也会导致动画问题。
我的一个朋友告诉我,他们制作了一个 PageConductor,可以轻松地在任何视图控制器之间切换。这真的让我很困惑......