如何从applicationDidEnterBackground
AppDelegate
拨打viewController
中的{{1}}?
我想在不按主页按钮的情况下在应用程序的后台运行一个功能。
答案 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中
@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]]