控制器之间的数据传递——NSUserDefaults传值
2016-08-30 11:00
344 查看
NSUserDefaults传值
使用偏好设置(NSUserDefaults)传值实质是一个控制器把数据持久化于沙盒,另一个控制器再从沙盒读取对应的文件获取数据,它是一种以文件进行传值的方式。一. 实现步骤
在界面2中,声明NSUserDefaults变量,并往NSUserDefaults对象中添加要传递的数据在界面1中,声明NSUserDefaults变量,通过对应的健取出对应的数据
二. 具体代码
1. AppDelegate类
---------- AppDelegate.m文件 #import "AppDelegate.h" #include "OneViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1. 创建窗口 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 2. 创建窗口的根控制器 // 2.1 创建导航控制器的根控制器 UIViewController *oneVc = [[OneViewController alloc] init]; // 2.2 创建导航控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:oneVc]; // 2.3 给窗口设置根控制器 self.window.rootViewController = nav; // 3. 设置窗口为主窗口并显示窗口 [self.window makeKeyAndVisible]; // 隐藏导航控制器的导航条 nav.navigationBarHidden = YES; return YES; } @end
2. OneViewController类
---------- OneViewController.m文件 #import "OneViewController.h" #import "TwoViewController.h" @interface OneViewController () @property (nonatomic,strong) UITextField *textField; @end @implementation OneViewController - (void)viewDidLoad { [super viewDidLoad]; //设置控制器View的背景颜色 self.view.backgroundColor = [UIColor greenColor]; // 创建点击按钮 UIButton *clickBtn = [UIButton buttonWithType:UIButtonTypeCustom]; clickBtn.frame = CGRectMake(10, 100, 80, 40); clickBtn.backgroundColor = [UIColor whiteColor]; [clickBtn setTitle:@"到界面2" forState:UIControlStateNormal]; [clickBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [clickBtn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; [clickBtn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:clickBtn]; // 创建文本框 _textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 150, 250, 40)]; _textField.borderStyle = UITextBorderStyleRoundedRect; _textField.backgroundColor = [UIColor whiteColor]; [self.view addSubview:_textField]; } #pragma mark - 点击事件 - (void)btnClick { // 创建界面2,并压入栈 TwoViewController *twoVc = [[TwoViewController alloc] init]; [self.navigationController pushViewController:twoVc animated:YES]; } - (void)viewWillAppear:(BOOL)animated { // 创建NSUserDefaults单例对象,它可以把数据以Plist文件形式存储于沙盒中,也可从沙盒中读取对应的Plist文件 NSUserDefaults *passData = [NSUserDefaults standardUserDefaults]; //获取数据 _textField.text = [passData objectForKey:@"passData"]; } @end
3. TwoViewController类
---------- TwoViewController.m文件 #import "TwoViewController.h" @interface TwoViewController () @property (nonatomic,strong) UITextField *textField; @end @implementation TwoViewController - (void)viewDidLoad { [super viewDidLoad]; //设置控制器View的背景颜色 self.view.backgroundColor = [UIColor yellowColor]; // 创建点击按钮 UIButton *clickBtn = [UIButton buttonWithType:UIButtonTypeCustom]; clickBtn.frame = CGRectMake(10, 100, 80, 40); clickBtn.backgroundColor = [UIColor whiteColor]; [clickBtn setTitle:@"传 值" forState:UIControlStateNormal]; [clickBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [clickBtn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; [clickBtn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:clickBtn]; // 创建文本框 _textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 150, 250, 40)]; _textField.borderStyle = UITextBorderStyleRoundedRect; _textField.backgroundColor = [UIColor whiteColor]; [self.view addSubview:_textField]; } #pragma mark - 点击事件 - (void)btnClick { // 创建NSUserDefaults单例对象,它可以把数据以Plist文件形式存储于沙盒中,也可从沙盒中读取对应的Plist文件 NSUserDefaults *passData = [NSUserDefaults standardUserDefaults]; // 保存数据 [passData setObject:_textField.text forKey:@"passData"]; // 跳转界面 [self.navigationController popViewControllerAnimated:YES]; } @end
相关文章推荐
- 控制器之间的数据传递——属性传值
- 控制器之间的数据传递——通知传值
- 控制器和视图之间传递数据的几种方式
- Controller之间传递数据:Block传值
- iOS通过NSUserDefaults实现简单的应用间数据传递
- iOS实现两个控制器之间数据的双向传递
- iOS开发中视图控制器ViewControllers之间的数据传递
- Controller之间传递数据:属性传值
- MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下:
- ASP.NET MVC 之控制器与视图之间的数据传递
- 两个控制器之间的数据传递 (MVC)
- 控制器之间的数据传递——代理传值
- 控制器之间的数据传递——storyboard中控制器的数据传递
- iOS开发中,实现两个控制器之间数据的双向传递
- 控制器之间的数据传递——Block传值
- 【iOS7的一些总结】3、视图控制器ViewControllers之间的数据传递(2)
- ios-day13-01(私人通讯录。控制器之间的数据传递、保存密码和自动登录的实现、普通对象的归档、UITableView的局部刷新和向左滑动删除功能等等)
- 【iOS7的一些总结】2、视图控制器ViewControllers之间的数据传递(1)
- 视图控制器ViewControllers之间的数据传递