この質問は長いので、しばらくお待ちください。
ご存知のように、コントローラーを表示するには、プッシュまたは提示の 2 つの方法があります。tabbarcontroller とナビゲーション コントローラーの 2 つの複合コントローラーもあります。これらを使用すると、複雑なビューコントローラー ツリーが作成される可能性があります。今、私はこのような複雑なviewcontrollerツリーを持っています.
T: タブバーコントローラー N: ナビゲーションコントローラー V: 通常のビューコントローラー P: プッシュ S: 存在
したがって、PV2 はビューコントローラーをプッシュすることを意味します。これは 6 つの組み合わせですが、PN は禁止されており、ナビゲーションコントローラーをプッシュすることはできません。そして私が研究しているように
T1 ---------------------- N1 N2 N3 | | | | PV1 PV3 | | PV2
現在のView ControllerはV2です。N3にジャンプしてV3をプッシュしたい。私はこのコードを書きました:
[self.navigationcontroller popToRootViewControllerAnimated:NO]; // No is important
tabbarcontroller.selectIndex = 2;
[N3 pushViewController:V3];
それは機能しますが、それでも悪いです。1: N3 は v3 を認識している必要があります。ViewController 間の結合は強力です。2: 複雑な状況では機能しません...アニメーションの問題も引き起こします。
私の友人は、任意のビューコントローラーを簡単に切り替えることができる PageConductor を作成したと教えてくれました。それは本当に私を混乱させました...