uinavigationbarからバックボタンがクリックされたときにビューをリロードする
-
20-08-2019 - |
質問
アプリケーションには、惑星、その月などに関する情報が表示されます。惑星のリストを表示し、ユーザーに惑星を選択してその詳細を確認してから、ブックマーク/ブックマークを作成します。選択した惑星の詳細をユーザーに示すビューがあります。また、ブックマークの追加/削除ボタンも含まれています。ユーザーがそのボタンをクリックすると、そのブックマークが追加/削除され、別のビューが現在のビューの上にプッシュされ、ブックマークが削除されていることをユーザーに伝えます。
質問は、ユーザーがステータスビューに表示されているナビゲーションバーの左側にある背面/惑星の詳細ボタンをクリックし、惑星の詳細ビューに戻ると、彼はまだ追加/削除(以前に表示されたもの)が表示されますが、これで、私が書いたコードに従って(以前に読み込んだボタンに従って)削除/追加する必要があります。
私が理解できるのは、ユーザーがそのバックボタンをクリックすると、前のビューがリロードされない、ステータスビューがポップアップするだけであるということです。ユーザーがステータスビューでバックボタンをクリックしたときに、AppをsetNeedSdisplayまたはブックマークの詳細をリロードできるものをリロードできるものはありますか?
または、可能な別の解決策はありますか?
彼がブックマークを削除/追加しただけだと思っているので、ユーザーは非常に混乱していますが、ボタンはまだ彼に追加/削除を求めています...
そのステータスビューは、コードの他のセクションでも使用されて、アクションのユーザーに結果を表示するため、コードを変更できないか、前のビューを確認して、惑星の詳細であるかどうかを確認してから、その後に確認できます。その内容をリロードします...
解決
ViewDidLoadメソッドでボタンを設定するコードを使用して、ViewWillAppearに移動します。ビューに再入力すると、ボタンを適切に更新する必要があります。
他のヒント
解決策が見つかりました:そのようなコード(PopViewControllerまたはそのようなイベントの後にボタンが変更されます)は、ビューが何であってもロードされるたびに実行するようにViewWillapearに記述する必要があります。
IRC.freenode.netの#iphonedevのQuentarezとCrackity_Jonesに感謝します。
デリゲートを正しく設定します
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
NSLog(@"navigationController willShowViewController");
}