2017-01-25 13 views
1

にビューコントローラをプッシュ私は、各タブのUINavigationControllerが含まれていUITabBarControllerで設定ストーリーボードを持っています。 UINavigationControllersの1つでは、ビューコントローラをプッシュまたはプレゼンテーションするときにトランジションアニメーションがありません。ませアニメーションUINavigationController

二つの異なる例が、これは

1.を発生したとき、私は、子ビューコントローラをプッシュするように設定ストーリーボードセグエを持って、少なくとも、があります。テーブルビューでセルを選択すると、セグがトリガーされます。 「Animates」ボックスがチェックされます。プログラム的に子ビューコントローラをプッシュしようと

The Attributes of the segue

同じ結果が得られます。

self.navigationController?.pushViewController(nextController, animated: true) 

モーダルナビゲーションコントローラのルートビューコントローラから別のビューコントローラを提示しようとしないアニメーションもありません。

modalViewController.modalTransitionStyle = UIModalTransitionStyle.flipHorizontal 
self.present(modalViewController, animated: true, completion: nil) 

私が提示しているルートビューコントローラで何かが間違っていると信じて私をリード遷移がアニメ化された別のビューコントローラからmodalViewControllerを提示した場合。

私が誤ってトリガしている場合もUIViewController上のアニメーションを無効にする方法はありますか?私がチェックし、あなたがUINavigationControllerにアニメーションを設定する代わりにself.present(

のないUIView.setAnimationsEnabled(false)

+0

デモプロジェクトをパックしてアップロードできますか? –

+0

ビューとビューコントローラという用語は、**互換性がありません**です。私はあなたの質問のタイトルを編集して "... **コントローラをプッシュするとき** ..." –

+0

@OwenZhao私はデモプロジェクトでこれを再現することができず、私の実際のプロジェクトをアップロードすることができません – Petter

答えて

1

は、私は、カスタムビューの状態をリセットするいくつかのコードを持っていました。リセットは、CATransaction.setDisableActions(true)によってアクションを無効にし、トランジションアニメーションを無効にしました。

viewDidDisappear(_ animated: Bool)にリセットを移動すると問題が解決しました。

+0

ソリューションを投稿していただきありがとうございます。それはあなたの質問スレッドを同じ問題を抱えている誰かにも役立ちます。今それを説明すると理にかなっています。あなたのコードで 'setDisableActions'または' removeAnimations'への呼び出しを検索することは良い提案でした。 –

3

使用self.navigationController?.pushViewController(がないことを確認しました。しかし、あなたはUIViewControllerによって提供される関数self.present(を呼び出しました。 UIViewControllerはもちろんアニメーションを提供することはできません。私の親ビューコントローラのviewWillDisappear(_ animated: Bool)上書きで

+0

私は、2つの異なる例があることは十分にはっきりしていなかったと思います。segueを使用したワンプッシュと、別のビューコントローラをプログラム的にモーダルに提示するもの。私は明確にするために質問を更新しました。また、ビューコントローラをプログラム的にプッシュすると同じ結果になります。 – Petter

関連する問題