2017-01-11 1 views
1

私は2つのビューA & BをAからBへ移動するだけです。ビュー内で、ナビゲーションバーのUIBarButton項目のbadgeValueを更新するアクションを実行します。ビューを更新するナビゲーションバーの戻るボタンが押されてビューBがポップされた後にビューAの後ろにあったA

picture 30

私が代わりに更新1で、UIBarButton項目は、前のbadgeValueを示しnavigationBar戻る]ボタンを使用して表示するために戻って(ショッピングカートにアイテムを追加することと同じように)、私はこれがために起こると思いますあなたが戻るボタンを押すと、ビューBはポップされたビューAをそのまま残していますので、ビューAに戻ってからビューAを更新するように指示する必要があります。

picture 29

代わりに私がbadgeValueが更新されるバックrootViewControllerに行くために戻って行こうと、私はrootViewControllerに行くときのviewDidLoadでコードが読み込まれ、badgeValueが更新されていることを推測した場合。

ちょうどポップされた別のビューの後ろにあるビューを更新する方法についてのアイデアはありますか?

EDIT

@silicon_valleyの答えが正しいですが、それは私が代わりにこれらの拡張をお勧めしますスウィフトのユーザーのために、バグだらけだから、それはMikeMTOLのライブラリでは動作しません。 - >link

+1

アンワインドセグを使用する方法のチュートリアルを参照してください。これにより、前のViewControllerにデータを戻してバッジを更新できます。 – rMickeyD

+0

うわー、それは速かった!ありがとう、私はそれを確認します –

答えて

2

コードを追加してバッジの値をviewWillAppearに更新できます。これは、ビューが画面上に戻るたびに(そして最初に作成されたときだけでなく)、値が更新されることを保証します。

+0

私はあなたが言ったことをしようとしましたが、これは完全にbadgeValueが消えることです。 私は現在、()メソッドviewDidLayoutSubViewsでbadgeValueを更新しています: 'オーバーライドFUNCのviewDidLayoutSubviews(){ するvar numeroProducto =文字列(Carrito.numProd) navigationItem.rightBarButtonItem .badgeValue = numeroProducto ?}' だこと別のviewControllerにプッシュするときにそれを保持できる唯一の方法は、viewDidLoadに配置すると、新しいコントローラがプッシュされた後に消えるからです。 –

+0

どのようにして 'UIBarButtonItem'を作成していますか?あなたが記述する動作は奇妙に思えます... –

+0

私はそれを作成していない、それはナビゲーションバーが持っている標準的な戻るボタンの矢印です、私がしたのは、カスタムのもののためのデフォルトのアイコンを変更していました。ログインビューの後のすべてのビューに対する単一のナビゲーションコントローラ。私はすべての私のビューのボタンを作成する必要はなく、それぞれのためのセレクターを使用して、バックビュー機能を実行する必要があるため、私は標準の戻るボタンを使用しています。 –

関連する問題