iOS: 当app从background切换到foreground,如何通知uiviewcontroller

当iOS应用从后台切换到前台时,AppDelegate的`applicationWillEnterForeground`和`applicationDidBecomeActive`会被触发,但当前UIViewController的`viewWillAppear`和`viewDidAppear`不会自动调用。要解决此问题,可以在UIViewController中注册为相应事件的观察者。记得在`viewWillDisappear`或`viewDidDisappear`中移除观察者,以防重复触发。在关闭并重新打开视图时,确保正确管理观察者的添加和移除。参考链接提供了一些Stack Overflow上的相关讨论。
摘要由CSDN通过智能技术生成

当app从background切换到foreground,会trigger AppDelegate.m的2个方法:applicationWillEnterForeground and applicationDidBecomeActive

但却不会trigger current view controller的 viewWillAppear and viewDidAppear 方法,那么怎么通知current view呢?

答案是通过在current view controller里把self注册为该event的observer!

- (void) viewWillAppear:(BOOL)animated{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillEnterForegroundNotification) name:UIApplicationWillEnterForegroundNotification object:nil];
}


- (void) appWillEnterForegroundNotification{
    NSLog(@"trigger event when will enter foreground.");
}

不过还有3个重要的issues:

1. 必须在view controller的 viewWillDisappear/viewDidDisappear 其中一个方法中remove this observer。这是因为假设从当

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值