如何从viewController访问applicationDidEnterBackground

时间:2014-07-10 11:56:04

标签: ios appdelegate

如何从applicationDidEnterBackground AppDelegate拨打viewController中的{{1}}?

我想在不按主页按钮的情况下在应用程序的后台运行一个功能。

9 个答案:

答案 0 :(得分:13)

你不应该从任何地方调用该功能。当应用程序进入后台时,它会通知你。

您只是想知道应用何时进入后台?如果是这样,那么您可以创建一个通知来帮助您:

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnteredBackground:) 
                                             name: UIApplicationDidEnterBackgroundNotification
                                           object: nil];

答案 1 :(得分:1)

雨燕4

NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: nil, queue: nil) { (notification) in
}

答案 2 :(得分:0)

这是一种委托方法。您不应手动调用此方法。如果要在此方法中调用代码返回。您应该创建一个函数并将代码移动到那里。然后你应该调用这个函数。

答案 3 :(得分:0)

这是另一种方式,它也会在后台运行 通常,您首先在viewController.m init方法(或其他适当的地方)中注册通知:

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

在您的App Delegate中,触发通知:

- (void)applicationDidEnterBackground:(UIApplication *)application
{

    [[NSNotificationCenter defaultCenter] postNotification: @"NotificationNameHere"];

}

答案 4 :(得分:0)

您应该在viewDidLaod方法中注册通知。

' UIApplicationDidBecomeActiveNotification'如果已注册,将自动通知您的申请和给定的控制器。

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

答案 5 :(得分:0)

在ViewController中

#import "AppDelegate.h"

@property AppDelegate *appDelegate;

在viewDidLoad中

appDelegate=[[UIApplication sharedApplication] delegate];

从AppDelegate调用函数

 [appDelegate applicationDidEnterBackground:[UIApplication sharedApplication]];

答案 6 :(得分:0)

在ViewController中

import" AppDelegate.h"

@property AppDelegate * appDelegate; 在viewDidLoad中

_appDelegate = [[UIApplication sharedApplication] delegate]; 从AppDelegate调用函数

[_ appDelegate applicationDidEnterBackground:[UIApplication sharedApplication]];

答案 7 :(得分:0)

快捷键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)
    }

    // ...

}

答案 8 :(得分:-1)

[[UIApplication sharedApplication].delegate applicationDidEnterBackground: [UIApplication sharedApplication]]