質問

アプリケーションには、惑星、その月などに関する情報が表示されます。惑星のリストを表示し、ユーザーに惑星を選択してその詳細を確認してから、ブックマーク/ブックマークを作成します。選択した惑星の詳細をユーザーに示すビューがあります。また、ブックマークの追加/削除ボタンも含まれています。ユーザーがそのボタンをクリックすると、そのブックマークが追加/削除され、別のビューが現在のビューの上にプッシュされ、ブックマークが削除されていることをユーザーに伝えます。

質問は、ユーザーがステータスビューに表示されているナビゲーションバーの左側にある背面/惑星の詳細ボタンをクリックし、惑星の詳細ビューに戻ると、彼はまだ追加/削除(以前に表示されたもの)が表示されますが、これで、私が書いたコードに従って(以前に読み込んだボタンに従って)削除/追加する必要があります。

私が理解できるのは、ユーザーがそのバックボタンをクリックすると、前のビューがリロードされない、ステータスビューがポップアップするだけであるということです。ユーザーがステータスビューでバックボタンをクリックしたときに、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");
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top