2017-12-07 7 views
2

ここに小さな質問があります。UIBarButtonItemはアンワインドセグを選択した後でも選択/強調表示されます

私は別のテーブルビューにセグを作るUIBarButtonItemを持っています。ユーザーがここで終わると、私は最初のテーブルビューに巻き戻しセグを実装しました。 UIBarButtonItemがunwind segue which can be seen hereの後でも選択/強調表示されているという事実を除いて、すべて正常に動作します。なぜこれが事実であると私はこれを修正することができたのだろうと思っていたのか分かりません?

ありがとうございます。

編集:私はそれは、ナビゲーションコントローラがこれを引き起こしている可能性があります使用

+0

ボタンを選択したままか、表の行がまだ選択されていますか? – tylerSF

+1

[なぜ、バーのボタンの色が変わるのですか?](https://stackoverflow.com/questions/47542641/why-documentation/index.html)ボタンの色が変わります) – Xcoder

+0

これがなぜ起こっているのか私自身の答えを見てください。 – Xcoder

答えて

0

を埋め込まれた言ったとき、私はthisを意味しました。 popToViewControllerを使用すると、問題が解決する可能性があります。 MyViewControllerを、あなたが行きたいVievControllerに置き換えてください。

let vc = self.navigationController?.viewControllers 

for v in vc! { 

    print("viewcontroller is: \(v)") 
    if v as? MyViewController != nil { 
     self.navigationController?.popToViewController(v, animated: false) 
    }      
} 
+0

私はナビゲーションコントローラクラスを作成する必要がありますか?現時点では私のストーリーボードにはナビゲーションコントローラしかありません。そしてこのコードをどこに置くべきですか? – symenize

+0

作成したセグを削除し、UIBarButtonItemにアクションを追加します。このコードをボタンのアクション内に配置します。 – DevB2F

+0

私はそれを試して、それは動作しませんでした。私はsegueを削除し、barbuttonitemにアクションを追加して実行し、2番目のView Controllerに行ったが、最初のView Controllerに戻ったときにボタンは選択されていた/私の質問に示されたイメージのように強調表示された。明らかにするには、セカンドビューコントローラへのセグが機能し、ボタンの動作は巻き戻し後に発生します – symenize

0

ここでこれを解決する方法をまだ検討しようとしている人は、すばやく回避できます。そこに次のコードを入れてアンあなたのアンワインドセグエ方法に進みます。

if self.navigationItem.rightBarButtonItem?.style == .plain { 
     self.navigationItem.rightBarButtonItem?.style = .done 
    } 
if self.navigationItem.rightBarButtonItem?.style == .done { 
     self.navigationItem.rightBarButtonItem?.style = .plain 
    } 

それはすべてのケースでは動作しないかもしれませんが、それは私のために働きました。それは、IOS 11.2のバグです

4

を(それはしかし働き、なぜ私は本当に知らない)、私はこのようにそれを解決:

override func viewWillDisappear(_ animated: Bool) { 
    navigationController?.navigationBar.tintAdjustmentMode = .normal 
    navigationController?.navigationBar.tintAdjustmentMode = .automatic 
} 
関連する問題