js_*_*js_ 62 iphone objective-c ios
我想在应用程序变为活动状态或成为前台时在UIViewController中重新加载数据.
我知道在AppDelegate类中调用了applicationDidBecomeActive.
但我必须有一个UIViewController的全局变量来重新加载AppDelegate类中的数据,就像这段代码一样:
in AppDelegate.m
// global variable
UIViewController *viewController1;
UIViewController *viewController2;
-(void)applicationDidBecomeActive:(UIApplication *)application
{
[viewController1 reloadData];
[viewController2 reloadData];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我有很多UIViewControllers时,它很不方便.
我可以在UIViewController而不是AppDelegate类中使用applicationDidBecomeActive吗?
或者有比UIViewController的全局变量更好的方法吗?
我还需要使用UIViewControllers中的以下方法:
-(void)applicationWillResignActive:(UIApplication *)application
-(void)applicationDidEnterBackground:(UIApplication *)application
-(void)applicationWillEnterForeground:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)
Apu*_*urv 143
在重新激活时,如果要为视图控制器携带特定内容,则应在其viewDidLoad方法中注册通知.
UIApplicationDidBecomeActiveNotification 如果他们已注册,将自动通知您的应用程序和给定的控制器.
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(yourMethod)
name:UIApplicationDidBecomeActiveNotification
object:nil];
Run Code Online (Sandbox Code Playgroud)
Adr*_*eil 50
以下是在Swift中注册通知处理程序的示例(改编自Apurv上面的答案):
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(applicationDidBecomeActive(notification:)),
name: NSNotification.Name.UIApplicationDidBecomeActive,
object: nil)
}
@objc func applicationDidBecomeActive(notification: NSNotification) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
更新Swift 4.2:
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(applicationDidBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil)
}
@objc func applicationDidBecomeActive(notification: NSNotification) {
// Application is back in the foreground
print("active")
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*lea 22
斯威夫特3:
NotificationCenter.default.addObserver(
self,
selector: #selector(applicationDidBecomeActive(_:)),
name: NSNotification.Name.UIApplicationDidBecomeActive,
object: nil)
func applicationDidBecomeActive(_ notification: NSNotification) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
注意:不要忘记删除观察者
| 归档时间: |
|
| 查看次数: |
55337 次 |
| 最近记录: |