1

アプリケーションは、惑星やその衛星などに関する情報を表示します。惑星のリストを表示し、ユーザーが惑星を選択してその詳細を表示し、ブックマーク/ブックマークを解除できるようにします。選択した惑星の詳細をユーザーに表示するビューがあり、ブックマークの追加/削除ボタンも含まれています。ユーザーがそのボタンをクリックすると、そのブックマークが追加/削除され、現在のビューの上に別のビューが押されて、ブックマークが削除されたことをユーザーに通知します。

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

私が理解できるのは、ユーザーがその戻るボタンをクリックしても、前のビューは再ロードされず、ステータスビューがポップアップするだけだということです。ユーザーがステータスビューの[戻る]ボタンをクリックしたときに、アプリでsetNeedsDisplayを実行したり、ブックマークの詳細viewDidLoadコードを再読み込みしたりする方法はありますか?

または、別の解決策がありますか?

ブックマークを削除/追加したばかりだとユーザーが思っているのに、ボタンが追加/削除を求めているので、ユーザーは非常に混乱します...

そのステータスビューは、コードの他のセクションでも使用され、アクションのユーザーに結果を表示して、コードを変更できないようにします。または、前のビューを確認し、惑星の詳細であるかどうかを確認してから、その内容をリロードします。

4

3 に答える 3

5

viewDidLoad メソッドでボタンを設定するコードを取得し、viewWillAppear に移動します。ビューに再度入ると、ボタンが適切に更新されます。

于 2009-05-09T08:27:35.417 に答える
0

デリゲートを正しく設定し、

- (void)navigationController:(UINavigationController *)navigationController
                 willShowViewController:(UIViewController *)viewController
                 animated:(BOOL)animated
{
    NSLog(@"navigationController willShowViewController");
}
于 2009-09-03T19:09:41.900 に答える
0

私は解決策を見つけました: そのようなコード (popViewController またはそのようなイベントの後に変更されるボタン) は、viewWillApear に記述して、ビューが読み込まれるたびに実行されるようにする必要があります。

#iphonedev irc.freenode.net の Quentarez と crackity_jones に感謝します。

于 2009-05-09T08:46:10.287 に答える