14291


お世話になります  
uinavigationcontrollerの挙動で完全に詰まってしまいまして、質問させていだきました  
トップ→一覧→詳細とpushで遷移できる挙動を作っているのですが、  
swipe backすると乱れてしまいます。  
こんな風に  
[![画像の説明をここに入力](https://i.stack.imgur.com/A8vwy.png)](https://i.stack.imgur.com/A8vwy.png)

最初は、上記のようになったあと、どんな操作しても乱れたままだったのが、いまは、なんとか、トップに戻った時だけ、たまに乱れるって感じで収まってます。本来は下記の画像のようになるのですが。。。  
[![画像の説明をここに入力](https://i.stack.imgur.com/Nm0nH.png)](https://i.stack.imgur.com/Nm0nH.png)

以下のチケットを見たのですが、  
<https://stackoverflow.com/questions/24226392/ios-7-corrupt-uinavigationbar-
when-swiping-back-fast-using-the-default-interact>

トップページだけ解決せずでして。。。  
トップは  
上記のようにswitchで画面の出しわけをしてます。  
hiderarchyも見たのですが、特に問題なさそうな感じで完全にお手上げです

どなたかご教授いただけますと幸いです

よろしくお願いいたします。

[![画像の説明をここに入力](https://i.stack.imgur.com/A8vwy.png)](https://i.stack.imgur.com/A8vwy.png)


CC BY-SA 3.0
2015-08-06T13:14:26.987
13113
2015-08-11T14:15:35.570
2017-05-23T12:38:56.467
-1
403
question
ios swift uinavigationcontroller
iosのnavigation controllerを使ってる際にswipe backでnavigationが乱れる


各viewcontrollerの開始、終了の際に  
navigationitemをnil、初期化するようにしたところ、ある程度ましになりました  
あとはアップルにも聞いてみます


CC BY-SA 3.0
2015-08-10T12:31:46.320
14238
2015-08-10T12:31:46.320
403
13113
answer


「画面が乱れる」とだけ書かれあって、  
画面表示関係のコードが何も書かれてないのでは  
普通はアドバイスのしようがありません。

ただ、私も以前、戻りの画面遷移で、たまに画面が乱れる  
というトラブルに遭遇したことがあるので、その時の経験を  
ふまえたアドバイスをします。

`UINavigationController`を使った基本的な画面構成で  
何も特別なことをしていないなら、swipe backしても  
画面が乱れることはないはずです。それは`UINavigationController`  
のサンプルプロジェクトを作ればすぐ検証できます。  
それとどう動きが違うかを調べてみることをお勧めします。

基本的には、戻り画面は遷移先へ移行する前の状態が  
そのまま維持され、戻り時にはそれがそのまま再表示  
されるだけのはずです。  
それがきちんと維持されていれば、乱れないはずです。

しかし、画面の戻り時には`viewWillAppear`や`viewDidLayout`が  
動作するため、そこに何か特別な処理を書いていれば、その処理で  
画面を乱すなんらかの操作が行われる可能性があります。  
そこの動きをよく調べて悪影響を及ぼしていないか見極めることです。

特にswipe backの場合、戻り先の画面の`viewWillAppear`が先に動いて、  
完全に画面が戻ってから戻り元の画面の`viewWillDisAppear`が  
動作するはずです。そのあたりのタイミングの問題もよく  
調べてみることです。


CC BY-SA 3.0
2015-08-11T14:15:35.570
14291
2015-08-11T14:15:35.570
9367
13113
answer