iOS App 获取从后台返回前台时的页面

产品美美的给小伙伴提了一个需求,当程序从后台进入前台时,如果是指定的页面,则弹出提示框。

大家首先想到的方法就是通过 AppDelegate.h 进行控制,相对复杂的步骤就是 在程序进入后台时对当前页面进行存储,然后在从后台进入前台再判断是否是符合条件的页面,判断是否弹框。基本思想就是这样

然后 我就开始需找新的方法,然后我就开始了新的实践

新方法 比较适用于匹配页面较少的情况, 对单个UIViewController进行监听

方法来源:http://www.shangxueba.com/jingyan/1844939.html

上面的方法 把监听放在了

- (void)viewDidLoad

销毁监听放在

-(void)dealloc

但是这样做有个问题,因为只有在页面真正销毁时才会调用  -(void)dealloc 这样有很多情况页面没有销毁,但是也没有显示在当前窗口(比如 push新页面进入,旧页面不会销毁)

所以我把监听添加和销毁的位置进行了移动

-(void)viewDidAppear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(someMethod:)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];
}

-(void)viewDidDisappear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

  这样子 就可以保证只有在当前页面显示的时候调用监听啦

问题基本解决,可能还有漏洞 或是更好的方法,欢迎添加

时间: 2024-11-06 23:39:18

iOS App 获取从后台返回前台时的页面的相关文章

iOS 如何加载后台返回的HTML数据

返回数据: <p><b>\U516c\U53f8\U7b80\U4ecb</b></p><p>    \U5584\U76c8\U7ba1\U7406\U56e2\U961f\U521b\U59cb\U4e8e2008\U5e74\Uff0c\U7ecf\U8fc7\U591a\U5e74\U7684\U5386\U7ec3\U73b0\U5df2\U53d1\U5c55\U6210\U4e3a\U4e00\U5bb6\U4ee5\U6295\U

后台返回完整的HTML页面代码,如何打开展示

问题: 后台返回的html代码片段,需要插入html标签中,而返回的整个html文档,则需要重写整个页面. 解决方法: 1.需要一个中转页面,用document.write()方法重写整个页面: // POST任意内容并跳转 function StandardPost(html) { localStorage.removeItem('callbackHTML'); localStorage.setItem('callbackHTML',html); window.location.href =

struts2后台返回json到jsp页面

1.在action定义一个全局变量如: private Map<String, Object> dataMap; 2.控制层方法 说明:主要的目的是把我们定义的Map转为Json对象,然后输出到前台    public String valiDateCode(){        HttpServletRequest request = ServletActionContext.getRequest();        HttpSession session = request.getSessi

iOS App的状态

Refer: App States and Multitasking iOS设备的系统资源有限,所以App在前台运行和在后台运行的时候是有区别的.为了节省电池寿命和用户体验,App在后台运行的时候,有一些功能会被操作系统限制. 当App在前台运行的时候,可以处理系统发送的touch事件.UIKit基础架构已经做了大部分的工作用来把事件分发到自定义的对象上,开发者只需要重写一些相应的方法. 在App的开发过程中建议遵守的方针: (Required)对状态的切换做出适当的相应,否则可能会造成数据丢失

iOS 7的手势滑动返回

如今使用默认模板创建的iOS App都支持手势返回功能,假设导航栏的返回button是自己定义的那么则会失效,也能够參考这里手动设置无效. [cpp] view plaincopy if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enab

iOS 7的手势滑动返回功能

现在使用默认模板创建的iOS App都支持手势返回功能,如果导航栏的返回按钮是自定义的那么则会失效,也可以参考这里手动设置无效. if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } 如果是因为自定义导航按钮而导

iOS如何检测app从后台调回前台

当按Home键,将应用放在后台之后,然后再次调用回来的时候,回出发AppDelegate里面的一个方法,-(void)applicationWillEnterForeground. 当应用再次回到后台就会执行该方法,所以监听 UIApplicationWillEnterForegroundNotification这条通知就可以获取返回前台的操作了. UIApplication *app = [UIApplication sharedApplication]; [[NSNotificationCe

后台返回JSON前台获取循环解析

利用JQuery的$.ajax()可以很方便的调用 asp.net的后台方法.但往往从后台返回的json字符串不能够正确解析,究其原因,是因为没有对返回的json数据做进一步的加工.其实,这里只需 要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次即可,这种方式也适合以普通javascipt方式获取json对象,以 下举例说明: $.ajax({        type: "POST",        url: "json_post.aspx/get

iOS app集成支付宝支付流程及后台php订单签名处理

iOS app集成支付宝支付流程 1: 开通支付宝商户 由公司去支付宝 https://b.alipay.com/order/serviceIndex.htm 签约支付宝开通支付宝商家: 2:商户支付宝开通无线支付功能 开通商户支付宝之后,虽然可以获取到应用使用的 key和id,如果如果不开通无线支付功能的话,会在app集成的时间 提示商户未开通无线支付功能的错误: 开通商户支付宝-无线支付功能,请在商户支付宝后台,按要求提供审核材料开通: 3:在商户支付宝后台下载SDK 在商户支付宝后台,即可