IOS开发之页面间传值的几种小方法

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

最正经的页面间传值方式莫过于代理传值,今天写的几种小方法不包括代理传值,因为是自学的原因,现在都不知道这几种方法的优缺点,往知道的朋友指正一下;

第一种:属性传值;(这种方法在故事版无效,适合纯代码编写时使用,为什么???)

前提:比如说有两个视图控制器:AViewController和BViewController,他们之间想从A传值到B,

——》在AViewController.m文件中

(1)导入BViewController

#import "BViewController.h"

(2)定义全局变量

比如:我们在A中加一个UITextfield控件,将他的值传递到B

@PRoperty (nonatomic, strong) UITextField *text;

(3)需要传值的地方编码

BViewController *Bvc =[[BViewController alloc] initWithNibName:nil bundle:nil];//赋值Bvc.chuanzhi =text.text;//跳转[self.navigationController pushViewController:Bvc animated:YES];

——》在BVIewController.h文件中

定义上一步编码时,赋值时Bvc.chuanzhi 的变量就是我们需要在.h文件中定义的;

@property (nonatomic, strong) NSString *chuanzhi;

——》在BViewController.m文件中

这样我们就可以在B中随处使用传递过来的值;

第二种:segue传值;

前提:比如说有两个视图控制器:AViewController和BViewController,他们之间想从A传值到B,它们之间的连线Identifier:aTob

——》AViewController.m文件中

(1)打开下面这个方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

(2)在其中进行传值

//In a storyboard-basedapplication, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {if([segue.identifier isEqualToString:@"aTob"])

{idtheSegue =segue.destinationViewController;//赋值[theSegue setValue:@"A页面的值"forKey:@"自己的KEY"];

}

}

——》在BviewController中的操作和上一种方法一样

第三种:用NSUserDefaults传值;

——》AViewController中

需要传值的地方编码

//存储数据NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];

[defaults setObject:@"A界面需要传递的值"forKey:@"自己的KEY"];//设置同步[defaults synchronize];

——》BViewController文件中

在ViewDidLoad中编码读取传递过来的值

//读取A界面传递过来的值NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];

self.userId= [defaults valueForKey:@"自己的KEY"];

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航