![](/img/trans.png)
[英]How stop locationManagerUpdates from ViewController in applicationDidEnterBackground
[英]How to access applicationDidEnterBackground from viewController
我怎么能叫applicationDidEnterBackground
,在AppDelegate
從一個viewController
?
我想在應用程序的后台運行一個功能,而無需按下主頁按鈕。
你不應該從任何地方調用該函數。 當應用程序進入后台時,它會通知您。
你只是想知道應用程序何時進入后台? 如果是這樣,那么您可以創建一個通知來幫助您:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(handleEnteredBackground:)
name: UIApplicationDidEnterBackgroundNotification
object: nil];
斯威夫特4
NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: nil, queue: nil) { (notification) in
}
這是一種委托方法。 您不應手動調用此方法。 如果要在此方法中調用代碼返回。 您應該創建一個函數並將代碼移動到那里。 然后你應該調用這個函數。
這是另一種方式,它也將在后台運行。通常,您首先在viewController.m init方法(或其他適當的地方)注冊通知:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(someMethod:)
name: @"NotificationNameHere"
object: nil];
在您的App Delegate中,觸發通知:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] postNotification: @"NotificationNameHere"];
}
您應該在其viewDidLaod方法中注冊通知。
'UIApplicationDidBecomeActiveNotification'將自動通知您的應用程序和給定的控制器,如果他們已注冊。
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(yourMethod)
name:UIApplicationDidBecomeActiveNotification
object:nil];
在您的ViewController中
#import "AppDelegate.h"
@property AppDelegate *appDelegate;
在你的viewDidLoad中
appDelegate=[[UIApplication sharedApplication] delegate];
從AppDelegate調用函數
[appDelegate applicationDidEnterBackground:[UIApplication sharedApplication]];
在您的ViewController中
@property AppDelegate * appDelegate; 在你的viewDidLoad中
_appDelegate = [[UIApplication sharedApplication] delegate]; 從AppDelegate調用函數
[_appDelegate applicationDidEnterBackground:[UIApplication sharedApplication]];
斯威夫特4
在應用程序進入后台時在視圖控制器中運行某些內容(通常會保存一些用戶數據):
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: nil, queue: nil) { (notification) in
print("app did enter background")
// run your code here (or whatever)
}
// ...
}
[[UIApplication sharedApplication].delegate applicationDidEnterBackground: [UIApplication sharedApplication]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.