博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(8) iphone 开发 数据传递 : 02 页面切换与数据的反向传递
阅读量:7025 次
发布时间:2019-06-28

本文共 2952 字,大约阅读时间需要 9 分钟。

一:两个view之间的数据相互传递。1)这里两个view间切换主要用到的是每个类对象固有的属性(modalTransitionStyle)来设置过渡模式(也就是过渡(切换)到别的界面)。2)还会用到委托(delegate)来响应事件方法。3)要特别注意协议delegate:[plain] view plaincopy@protocol delegate 
-(void)myupdata:(NSString *)str; @end 在此程序中的作用:是从视图2(MyModalTransition (定义一个id 类型遵循上诉协议的属性:mydelegate 。mydalegate会得到视图1类,从而调用其实现的方法。))返回到视图1(MyObserver(遵循上诉协议实现其myupdata方法))的重要渠道。二:新建程序:第一个viewMyObserver.h[plain] view plaincopy#import
#import "MyClass.h" #import "MyModalTransition.h" @interface MyObserver : UIViewController
{ UITextField *mytext01; } @property(retain) MyClass *myclass; //定义另一个类MyModalTransition的属性 @property(nonatomic,retain) MyModalTransition *mymtra; @property (nonatomic, strong) IBOutlet UITextField *mytext01; -(void)myupdata:(NSString*) str;- (IBAction)btnpress:(id)sender; -(void)exit; @end MyObserver.m[plain] view plaincopy#import "MyObserver.h" @implementation MyObserver @synthesize mytext01; @synthesize mymtra; - (void)viewDidLoad { //点击屏幕键盘的return键时,键盘响应exit方法,放弃第一响应者退出 [self.mytext01 addTarget:self action:@selector(exit) forControlEvents:UIControlEventEditingDidEndOnExit]; [super viewDidLoad]; // Do any additional setup after loading the view from its nib. } -(void)myupdata:(NSString *)str{ self.mytext01.text=str; //放弃过渡模式,开始开始显示第一个view [self dismissModalViewControllerAnimated:YES]; } - (IBAction)btnpress:(id)sender { self.mymtra=[[MyModalTransition alloc] init]; //定义模型过渡样式 mymtra.modalTransitionStyle=UIModalTransitionStylePartialCurl; //mymtra.modalTransitionStyle=UIModalTransitionStyleCoverVertical; //数据传递 mymtra.message=self.mytext01.text; //把当前类self传给另一个视图的委托 mymtra.mydelegate=self; //呈现模型 [self presentModalViewController:mymtra animated:YES]; } -(void)exit{ //放弃第一响应者身份 [self resignFirstResponder]; } 第二个viewMyModalTransition.h[plain] view plaincopy#import
//在这定义协议的原因是:这样mydelegate属性遵循协议的时候本身就有了myupdata方法,其实现部分就是在上一个视图MyObserver里。当mydelegate获得MyObserver时就可以调用这个方法了。 @protocol delegate
-(void)myupdata:(NSString *)str; @end @interface MyModalTransition : UIViewController { UITextField *mytext02; } //遵循delegate协议就拥有了其myupdata方法 @property(assign) id
mydelegate; @property (nonatomic, strong) IBOutlet UITextField *mytext02; @property(copy) NSString *message; - (IBAction)btnbackpress:(id)sender; @end MyModalTransition.m[plain] view plaincopy#import "MyModalTransition.h" @implementation MyModalTransition @synthesize mytext02; @synthesize mydelegate; @synthesize message; //点击按钮 - (IBAction)btnbackpress:(id)sender { NSString *str=mytext02.text; //值传递 [self.mydelegate myupdata:str]; } #pragma mark - View lifecycle - (void)viewDidLoad { self.mytext02.text=message; [super viewDidLoad]; // Do any additional setup after loading the view from its nib. } 运行结果:

转载地址:http://zrsxl.baihongyu.com/

你可能感兴趣的文章
选择排序
查看>>
独立博客开张!有关读书、GTD和IT方面的内容将发布在新网站上
查看>>
通过IEnumerable和IDisposable实现可暂停和取消的任务队列
查看>>
安卓开发_浅谈ContextMenu(上下文菜单)
查看>>
理解class.forName()
查看>>
ios 多线程 面试
查看>>
[Papers]NSE, $u_3$, Lebesgue space [Cao-Titi, IUMJ, 2008]
查看>>
顺序队列实现任务以此执行-任务调度系列2
查看>>
PHP JSON 数据解析代码
查看>>
Android 启动APP黑屏解决方案
查看>>
windows 2003 远程登录时如何修改管理员密码
查看>>
sql server 2008 评估期已过期解决办法
查看>>
2015第8周三马年除夕
查看>>
UI的重用性
查看>>
What is Split Brain in Oracle Clusterware and Real Application Cluster (文档 ID 1425586.1)
查看>>
php SimpleXML
查看>>
CLR C++ Set Word CustomDocumentProperties
查看>>
会员数据挖掘
查看>>
13、java中8中基本类型
查看>>
纯css3制作写轮眼开眼及进化过程
查看>>