188

UIApplicationDelegateメインの AppDelegate.m クラスにプロトコルがあり、メソッドがapplicationDidBecomeActive定義されています。

アプリケーションがバックグラウンドから戻ったときにメソッドを呼び出したいのですが、そのメソッドは別のビュー コントローラーにあります。メソッドで現在どのView Controllerが表示されているかを確認し、applicationDidBecomeActiveそのコントローラー内のメソッドを呼び出すにはどうすればよいですか?

4

11 に答える 11

313

アプリケーション内のどのクラスも、アプリケーション内のさまざまな通知の「オブザーバー」になることができます。ビュー コントローラーを作成 (またはロード) するときに、それを のオブザーバーとして登録し、UIApplicationDidBecomeActiveNotificationその通知がアプリケーションに送信されたときに呼び出すメソッドを指定します。

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

自分の後片付けを忘れずに!ビューがなくなるときは、オブザーバーとして自分自身を削除することを忘れないでください。

[[NSNotificationCenter defaultCenter] removeObserver:self 
                                                name:UIApplicationDidBecomeActiveNotification
                                              object:nil];

通知センターに関する詳細情報。

于 2010-09-03T22:10:10.763 に答える
82

Swift 3、4 相当:

オブザーバーの追加

NotificationCenter.default.addObserver(self,
    selector: #selector(applicationDidBecomeActive),
    name: .UIApplicationDidBecomeActive, // UIApplication.didBecomeActiveNotification for swift 4.2+
    object: nil)

オブザーバーの削除

NotificationCenter.default.removeObserver(self,
    name: .UIApplicationDidBecomeActive, // UIApplication.didBecomeActiveNotification for swift 4.2+
    object: nil)

折り返し電話

@objc func applicationDidBecomeActive() {
    // handle event
}
于 2016-09-28T13:35:46.643 に答える
16

Swift 2 相当:

let notificationCenter = NSNotificationCenter.defaultCenter()

// Add observer:
notificationCenter.addObserver(self,
  selector:Selector("applicationWillResignActiveNotification"),
  name:UIApplicationWillResignActiveNotification,
  object:nil)

// Remove observer:
notificationCenter.removeObserver(self,
  name:UIApplicationWillResignActiveNotification,
  object:nil)

// Remove all observer for all notifications:
notificationCenter.removeObserver(self)

// Callback:
func applicationWillResignActiveNotification() {
  // Handle application will resign notification event.
}
于 2015-08-16T18:59:49.247 に答える
7

スウィフト 4.2

オブザーバーを追加-

NotificationCenter.default.addObserver(self, selector: #selector(handleEvent), name: UIApplication.didBecomeActiveNotification, object: nil)

オブザーバーを削除-

NotificationCenter.default.removeObserver(self, name: UIApplication.didBecomeActiveNotification, object: nil)

ハンドルイベント-

@objc func handleEvent() {
}
于 2018-11-10T15:32:47.997 に答える