簡體   English   中英

如何從viewController訪問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中

導入“AppDelegate.h”

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM