私は検索して検索しましたが、私の問題を解決する方法を見つけることができません。私は最初のビューコントローラ(Tinderスタイルのような)としてUIPageviewControllerを持っています。私はそれぞれのviewController子(ページ)を自分自身のUINavigationController内に埋め込みたいので、基本的にページビューコントローラーは子ビューコントローラーとしてUINavigationControllerを追加します。そして、私は、ユーザーが子ビューコントローラのナビゲーションコントローラ内のボタンをタップして、次のビューコントローラに移動するときにsetViewControllerメソッドを使用しています。これは、pageviewcontrollerデータソースを使用するのではなく親ページビューコントローラへの参照を取得することです。私はスワイプジェスチャーをしたくないので、pageviewcontrollerのデータソースを使用したくありません。UIPageViewController内のUINavigationController問題
しかし、ユーザが子ページのナビゲーションコントローラのボタンをタップして親ページビューコントローラを起動し、次のコントローラ(UINavigationController)を設定すると、これを行うアニメーションによって画面全体が上下にジャンプします。ナビゲーションコントローラを削除して、代わりにビューコントローラの子を送信すると、正常に動作します。誰でもページコントローラの中にナビゲーションコントローラを埋め込むことでこの問題が発生するのは誰か知っていますか?
ここで、ユーザは、ナビゲーションコントローラのナビゲーションバーのバーボタンアイテムをタップしたときに使用されるコードは次のとおり
FUNCのpageViewControllerSetNewControllerFoward(){ プリント(「ページ・ビュー・コントローラ・セットマッチ」)は
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let matchesController = storyboard.instantiateViewController(withIdentifier: "matchesNav") as! UINavigationController
parentPageViewControllerReference.setViewControllers([matchesController], direction: .forward, animated: true, completion: nil)
}
お返事ありがとうございます。 @ミスラフ私はそれぞれのpageviewcontrollerの子ビューコントローラがそれ自身のナビゲーションバー項目を設定する必要があります。 pageviewcontrollerはナビゲーションコントローラには組み込まれていませんが、それは子供だけです。それぞれの子は、それぞれのナビゲーションコントローラのルートビューです。子の代わりに独自のナビゲーションコントローラにpageviewcontrollerを埋め込み、pageviewcontrollerでナビゲーション項目を設定すると、この問題を解決できます。しかし、これはホームスクリーンカードのスワイプ機能を駄目にする.....カードはナビゲーションバー上をスワイプする必要があります。 –
ありがとう。その場合は、UINavigationControllerの初期ビューを「プッシュ」アニメーションなしでコントローラにプッシュしてみてください。おそらくseguesとStoryboardを使用する代わりに、そのプロセスマニュアルを作成してみてください。複数のシステムアニメーションが同時に発生している場合、iOSはグリッチが発生することが知られています –
どうすればよいか分かりません。私はストーリーボードで私のUINavigtionControllerをサブクラス化しなければなりませんか?ページビューコントローラがsetViewControllerを呼び出す前にナビゲーションコントローラのビューレイヤからアニメーションを削除しようとしましたが、動作しませんでした。 ...このように..... matchesController.view.layer.removeAllAnimations()。私は、ナビゲーションコントローラから子コントローラへのストーリーボードのセグを使用しています。再度、感謝します! @ Mislav –