1

設定のアプリケーションで 2 つのフィールドを定義しています。ユーザーがアプリケーションを開くと、設定で定義された 2 つのフィールドが正しく表示されます。ユーザーが設定を変更してアプリケーションを再度開いた場合、2 つのフィールドは更新されません。デバッガーを再起動したときにのみ正しく更新されます。viewWillAppearに refreshFields メソッドを追加しました。

ただし、電話の戻るボタンをクリックしてアプリケーションを再度開くと、 viewWillAppearがキャッチされません。電話の戻るボタンをクリックする代わりに、アプリケーションで作成した戻るボタンをクリックすると、すべて正常に動作します。

結論として、refreshFields メソッドをどこで呼び出して、電話の [戻る] ボタンをクリックした後にアプリケーションを 2 回目に開いたときにキャッチされるようにする必要がありますか?

ありがとう。

4

2 に答える 2

2

私の現在の解決策は、viewDidLoadに以下を追加しています:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshFields) name: UIApplicationDidBecomeActiveNotification object:nil];

ただし、画面が表示された後に UIApplicationDidBecomeActiveNotification がキャッチされるため、画面は古い値で数ミリ秒間表示されます。

于 2011-05-04T12:35:55.547 に答える
0

UIApplicationDelegate を見てみてください:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UIApplicationDelegate

- (void)applicationDidBecomeActive:(UIApplication *)application

このメソッドを使用して、アプリケーションが非アクティブなときに一時停止された (またはまだ開始されていない) タスクを再開する必要があります。たとえば、タイマーを再起動したり、OpenGL ES フレーム レートを調整したりするために使用できます。アプリケーションが以前にバックグラウンドにあった場合は、それを使用してアプリケーションのユーザー インターフェイスを更新することもできます。

于 2011-04-19T14:50:51.143 に答える