`

IOS之UI状态保持与恢复

 
阅读更多

为了实现点击Home键使程序退出,可以在设置属性*-info.plist修改Application does not run in background属性值为YES

为实现UI的状态保持和恢复,包括APP层面和storyboard层面,首要条件就是需要在AppDelegate.m文件添加以下两个方法。

- (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder {
    return YES;
}

- (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder {
    return YES;
}

 1.APP层面

          在APPDelegate.m中添加如下代码:

//本例子为记录上一次退出的时间,在下一次打开时显示出来
- (void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder {
    // 获取系统当前时间
    NSDate *date = [NSDate date];
    NSTimeInterval sec = [date timeIntervalSinceNow];
    NSDate *currentDate = [[NSDate alloc] initWithTimeIntervalSinceNow:sec];
    
    //设置时间输出格式:
    NSDateFormatter *df = [[NSDateFormatter alloc] init ];
    [df setDateFormat:@"yyyy年MM月dd日 HH小时mm分ss秒"];
    NSString *na = [df stringFromDate:currentDate];
    
    
    [coder encodeObject:na forKey:@"lastShutdownTime"];
    
    NSLog(@"application willEncodeRestorableStateWithCoder 时间为:%@", na);
    
    }

- (void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder {
    NSString * currentTime = [coder decodeObjectForKey:@"lastShutdownTime"];
    AppUtils *appUtils = [AppUtils alloc];
    if (currentTime) {
        [appUtils showDialog:@"上次关闭时间" message:currentTime];
    }
}


//附带AppUtils类文件
//AppUtils.h
#import <Foundation/Foundation.h>

@interface AppUtils : NSObject

- (void)showDialog:(NSString *)title message:(NSString *)message;

@end

//AppUtils.m
#import "AppUtils.h"

@implementation AppUtils

- (void)showDialog:(NSString *)title message:(NSString *)message{
    UIAlertView *alert = [[UIAlertView  alloc]
                                        initWithTitle:title
                                        message:message
                                        delegate:nil
                                        cancelButtonTitle:@"OK"
                                        otherButtonTitles:nil];
    [alert show];
}

@end

 2.storyboard层面

(1)选择指定的storyboard的ViewController,将其restorationID设置为viewController



 

(2)添加下面的方法,实现退出时保存文本框的文本信息。

-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
    NSLog(@"encodeRestorableStateWithCoder");
    [super encodeRestorableStateWithCoder:coder];
    [coder encodeObject:self.editText.text forKey:@"kSaveKey"];
}

-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
    NSLog(@"decodeRestorableStateWithCoder");
    [super decodeRestorableStateWithCoder:coder];
    self.editText.text = [coder decodeObjectForKey:@"kSaveKey"];
}

 

  • 大小: 149.7 KB
  • 大小: 262.1 KB
分享到:
评论

相关推荐

    IOS7 UI适配

    ### IOS7 UI适配策略与实践 随着iOS系统的不断更新,开发者们面临着应用程序在新旧系统版本间保持一致用户体验的挑战。iOS7作为苹果操作系统的一个重大转折点,引入了全新的设计语言,对UI元素进行了彻底的重塑,这...

    ios应用源码之一个适用于ipad的ui切换效果 2018127

    在iOS开发中,UI切换效果是提升用户体验的关键因素之一,特别是在iPad这样的大屏设备上,良好的界面交互设计能显著提高用户的满意度。标题“ios应用源码之一个适用于ipad的ui切换效果 2018127”指出,这是一个关于...

    iOS 网络状态判断demo

    在iOS开发中,网络状态的判断是至关重要的,它直接影响到应用的功能实现和用户体验。"iOS 网络状态判断demo"就是一个展示如何在iOS应用中检测网络连接状况的示例项目。在这个项目中,主要涉及到的技术点包括系统提供...

    swift-iOS界面刷新时保持UITextFieldUITextViewUISearchBar响应

    在iOS应用开发中,Swift语言提供了丰富的UI控件来构建用户界面,包括UITextField、UITextView和UISearchBar。这些控件允许用户输入文本,是许多功能的核心组成部分。然而,在执行界面刷新或更新操作时,如果不正确...

    IOS应用源码之iphone开发技巧UI篇之主题切换 类似weico BEThemeDemo.zip

    5. **状态保存与恢复**:在切换主题时,要确保用户的个人设置和应用状态不受影响,这涉及到MVC模式、NSUserDefaults或Core Data的使用。 6. **响应式编程**:可能采用了Swift的SwiftUI或者React Native等响应式编程...

    iOS开发 - 第02篇 - UI进阶 - 15 - 彩票(第二天)

    8. 状态保存与恢复:如果应用支持后台运行或在不同时间点继续游戏,需要理解如何使用`UserDefaults`或`NSCoding`来保存和恢复用户的游戏状态。 9. 响应式设计:为了让应用适应不同尺寸的屏幕,需要使用Auto Layout...

    了解如何使用NSUserActivity和SwiftUI实现基于场景的状态恢复:httpswww.vadimbulavi.zip

    在iOS开发中,状态恢复(State Restoration)是一个关键特性,它允许用户在应用程序重新打开时回到之前离开的位置,保持界面状态。NSUserActivity是苹果提供的一种机制,用于支持连续性(Continuity)和状态恢复。...

    iOS初学者用UI简单知识做的小游戏

    综上所述,这个"iOS初学者用UI简单知识做的小游戏"涵盖了iOS开发中的许多基础概念,包括UI设计、事件响应、数据结构与算法、状态管理以及多媒体应用。对于初学者来说,这是一个很好的实践项目,能够全面锻炼他们的...

    iOS App Programming Guide

    - **启动时恢复先前 UI 状态** - **可定制的应用行为** - **性能调优** - **iOS 环境对应用行为的影响** #### 深入解读关键知识点 ##### 将初始想法转化为实施方案 开发 iOS 应用的第一步是将你的创意转化为具体...

    iOS开发 - 第01篇 - UI基础 - 03 - 应用程序管理

    在iOS开发中,UI基础是开发者必须掌握的关键领域之一,而应用程序管理是UI设计中的重要环节。本篇文章将深入探讨“iOS开发 - 第01篇 - UI基础 - 03 - 应用程序管理”这一主题,通过一个简单的示例程序帮助初学者理解...

    ios-AFN封装实时更新网络状态.zip

    4. **实时更新UI**:当收到网络状态变化的通知时,可以更新UI上的网络状态图标或提示信息。例如,当网络断开时,显示“无网络”提示;网络恢复时,隐藏该提示或显示“已连接”图标。 5. **错误处理与重试机制**:...

    swift-EarlGrey一个原生iOSUI自动化测试框架

    EarlGrey是一个强大的原生iOS UI自动化测试框架,由Google开发并开源,它为iOS应用提供了细粒度的UI测试支持。使用Swift编程语言,EarlGrey能够帮助开发者编写出可读性强、易于维护的测试代码,从而确保应用的用户...

    IOS应用源码之续:游戏倒计时动画Demo----实现时间条动画的实时暂停和恢复.zip

    - 另一种方法是利用CADisplayLink,它可以与屏幕刷新同步,暂停时取消引用,恢复时重新添加。 4. **UI更新**: - 在iOS中,非主线程不能直接修改UI元素,因此倒计时更新UI的操作必须在主线程上进行。可以使用`...

    ios应用源码之续:游戏倒计时动画demo----实现时间条动画的实时暂停和恢复 ti

    本示例代码“ios应用源码之续:游戏倒计时动画demo----实现时间条动画的实时暂停和恢复 timecountdemo_simple_version”主要关注如何实现一个可实时暂停和恢复的时间条动画。 首先,我们要了解iOS中的动画系统。在...

    IOS 签到界面搭建与实现

    综上所述,搭建iOS签到界面涉及UI设计、数据持久化、用户交互逻辑、错误处理等多个方面。通过熟练掌握UIKit或SwiftUI,以及相关的数据管理工具和技术,开发者可以构建出功能完善、用户体验优秀的签到功能。在实际...

    iOS_App_Programming_Guide

    状态保存与恢复是《iOS应用编程指南》的一个重要部分。文档详细解释了状态保存和恢复的过程,包括保存过程的流程、恢复过程的流程,以及当排除某些视图控制器组时会发生什么。开发者可以在实现状态保存和恢复时遵循...

    最完美的android仿ios开关按钮

    5. 状态保存与恢复:当应用被关闭或屏幕旋转时,Android会调用`onSaveInstanceState()`和`onRestoreInstanceState()`方法来保存和恢复组件的状态。为了保持开关按钮的状态,我们需要在此处处理。 6. UI适配:为了...

    Beginning iOS 6 Development Exploring the iOS SDK

    书中会介绍应用程序的启动流程、后台模式、状态保存与恢复,以及如何使用Xcode的内置工具进行单元测试和UI测试。 最后,为了确保应用能适应各种屏幕尺寸和设备,本书会涵盖Auto Layout和Size Classes,这些都是实现...

    演示状态保存和恢复API的应用程序_Swift_下载.zip

    此外,项目可能还包含了如何处理网络请求、动画状态以及其他非UI状态的恢复策略。 总的来说,状态保存和恢复是提升用户体验的关键因素,特别是在处理复杂交互或者大量用户数据的应用中。通过学习和实践`...

    ios应用源码之下载带进度条记录的demo 2018127

    8. **状态持久化**: 为了保持下载进度,可以在UserDefaults或数据库中存储当前下载任务的状态,以便于恢复中断的下载。 9. **UI设计**: UI设计应简洁易懂,进度条应清晰地显示下载进度,同时提供取消或暂停的选项。...

Global site tag (gtag.js) - Google Analytics