私は、4つ以上の連続したビューコントローラをUINavigationControllerに埋め込んだXcode 7.xでストーリーボードを構築しようとしています。 ナビゲーションコントローラは初期ビューコントローラです。 埋め込みは、単一のボタンを含むシンプルなビューコントローラです。このボタンは、Adaptive Show Segueに接続され、同様のビューコントローラを呼び出すなどの機能を備えています。各自が簡単なショー・セグーで次のものを呼びます。 プッシュは3回の連続コールに対してのみ機能し、その後はナビゲーションコントローラへの参照が失われます。 5番目のビューコントローラとそれ以降がモーダル表示されます。UINavigationControllerは最大4つのViewControllerしか処理できませんか?
私は、少なくとも
のiOS 8以降、別のプロジェクトでこの問題を抱えていますがUINavigationControllerのviewControllersは、4つのエントリに限定スタックですか?
More than 4 view controllers embedded in an UINavigationController
埋め込みビューコントローラのコード:
class ViewController: UIViewController {
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
print("ViewCintroller:\(title) NavController:\(navigationController) stack size:\(navigationController?.viewControllers.count)")
print()
}
}
出力:
:ViewController:Optional("V1") NavController:Optional(<UINavigationController: 0x7fd57b024200>) stack size:Optional(1)
ViewController:Optional("V2") NavController:Optional(<UINavigationController: 0x7fd57b024200>) stack size:Optional(2)
ViewController:Optional("V3") NavController:Optional(<UINavigationController: 0x7fd57b024200>) stack size:Optional(3)
ViewController:Optional("V4") NavController:Optional(<UINavigationController: 0x7fd57b024200>) stack size:Optional(4)
ViewController:Optional("V5") NavController:nil stack size:nil
ViewController:Optional("V6") NavController:nil stack size:nil
非推奨プッシュタイプにすべてseguesを変える必要な結果をもたらします
ViewController:Optional("V1") NavController:Optional(<UINavigationController: 0x7fc8a1026200>) stack size:Optional(1)
ViewController:Optional("V2") NavController:Optional(<UINavigationController: 0x7fc8a1026200>) stack size:Optional(2)
ViewController:Optional("V3") NavController:Optional(<UINavigationController: 0x7fc8a1026200>) stack size:Optional(3)
ViewController:Optional("V4") NavController:Optional(<UINavigationController: 0x7fc8a1026200>) stack size:Optional(4)
ViewController:Optional("V5") NavController:Optional(<UINavigationController: 0x7fc8a1026200>) stack size:Optional(5)
ViewController:Optional("V6") NavController:Optional(<UINavigationController: 0x7fc8a1026200>) stack size:Optional(6)
編集:
私の意見では、問題はインターフェイスビルダーです。 私はすべてのショーセグを変更してセグをプッシュし、コンパイルし、プッシュセグを変更してセグを表示し、再度コンパイルして、異常を解消した作業ソリューションを得ました。ナビゲーションスタックは、これ以上4つのView Controllerに制限されません。
はい、問題は、他のView Controllerをモーダルで表示していないことです。私はすべてのビューコントローラで同じショーセグを使用しています。しかし、システムは、第5ビューコントローラーからモーダルでそれらを提示しています。新しいショーセグの代わりに廃止されたプッシュセグを使用しているとき、すべて正常に動作します! –
あなたは何か間違っている。 – nhgrif
私は私の質問を編集して、廃止予定のプッシュセグを使用しても4つのView Controllerを超えて期待どおりに動作していることを示しました。 唯一の問題は、ストーリーボードのショーセグが機能していないことです。だから、これはUINavigationControllerの問題ではないかもしれませんが、ストーリーボードではsegueを表示します。 唯一の解決策は、廃止予定のプッシュセグを使用するか、またはデモンストレーションのとおり、新しいView Controllerをプログラムでインスタンス化することです。 –