2016-10-30 9 views
0

私は検索して検索しましたが、私の問題を解決する方法を見つけることができません。私は最初のビューコントローラ(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) 

} 

答えて

0

この動作の原因は、UINavigationController自身のUINavigationBarを設定しようとしていることです。これはPageViewControllerとNavigationViewControllers falseにAutomatically Adjust Scroll Viewsを設定することで解決することができ、あなたのUINavigationController

+0

お返事ありがとうございます。 @ミスラフ私はそれぞれのpageviewcontrollerの子ビューコントローラがそれ自身のナビゲーションバー項目を設定する必要があります。 pageviewcontrollerはナビゲーションコントローラには組み込まれていませんが、それは子供だけです。それぞれの子は、それぞれのナビゲーションコントローラのルートビューです。子の代わりに独自のナビゲーションコントローラにpageviewcontrollerを埋め込み、pageviewcontrollerでナビゲーション項目を設定すると、この問題を解決できます。しかし、これはホームスクリーンカードのスワイプ機能を駄目にする.....カードはナビゲーションバー上をスワイプする必要があります。 –

+0

ありがとう。その場合は、UINavigationControllerの初期ビューを「プッシュ」アニメーションなしでコントローラにプッシュしてみてください。おそらくseguesとStoryboardを使用する代わりに、そのプロセスマニュアルを作成してみてください。複数のシステムアニメーションが同時に発生している場合、iOSはグリッチが発生することが知られています –

+0

どうすればよいか分かりません。私はストーリーボードで私のUINavigtionControllerをサブクラス化しなければなりませんか?ページビューコントローラがsetViewControllerを呼び出す前にナビゲーションコントローラのビューレイヤからアニメーションを削除しようとしましたが、動作しませんでした。 ...このように..... matchesController.view.layer.removeAllAnimations()。私は、ナビゲーションコントローラから子コントローラへのストーリーボードのセグを使用しています。再度、感謝します! @ Mislav –

0

viewDidLoad()

self.navigationController?.setNavigationBarHidden(true, animated: false) 

を設定してみてください。

self.pageViewController.automaticallyAdjustsScrollViewInsets = false以上の場合は、属性>レイアウト> 'スクロールビューの設定を調整'の下でInterface Builderでfalseに設定しても簡単です。

+0

私の遅い返事を申し訳ありません。私はその時にそれを試してもうまくいかなかったと信じていますが、私はUIを変更する理由をいくつか決めたので、もはや私の問題ではありません。ありがとう! –

関連する問題