在IOS里两个UIView窗口之间传递参数方法有很多,比如
1.使用SharedApplication,定义一个变量来传递.
2.使用文件,或者NSUserdefault来传递
3.通过一个单例的class来传递
4.通过Delegate来传递。
前面3种方法,暂且不说,这次主要学习如何使用通过Delegate的方法来在不同的UIView里传递数据 。
比如: 在窗口1中打开窗口2,然后在窗口2中填入一个数字,这个数字又回传给窗口1。
窗口1
窗口2
窗口2的结果传递给窗口1
1.首先定义个一委托UIViewPassValueDelegate用来传递值
@protocolUIViewPassValueDelegate
-(void)passValue:(NSString*)value;
@end
这个protocol 就是用来传递值
2.在窗口1的头文件里,声明delegate
#import<UIKit/UIKit.h>
#import"UIViewPassValueDelegate.h"
@interfaceDelegateSampleViewController:UIViewController<UIViewPassValueDelegate>
{
UITextField*_value;
}
@property(nonatomic,retain)IBOutletUITextField*value;
-(IBAction)buttonClick:(id)sender;
@end
并实现这个委托
-(void)passValue:(NSString*)value
{
self.value.text=value;
NSLog(@"thegetvalueis%@",value);
}
button的Click方法,打开窗口2,并将窗口2的delegate实现方法指向窗口1。
-(IBAction)buttonClick:(id)sender
{
ValueInputView*valueView=[[ValueInputViewalloc]initWithNibName:@"ValueInputView"bundle:[NSBundlemainBundle]];
valueView.delegate=self;
[selfsetModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[selfpresentModalViewController:valueViewanimated:YES];
}
第二个窗口的实现
.h 头文件
#import<UIKit/UIKit.h>
#import"UIViewPassValueDelegate.h"
@interfaceValueInputView:UIViewController{
NSObject<UIViewPassValueDelegate>*delegate;
UITextField*_value;
}
@property(nonatomic,retain)IBOutletUITextField*value;
@property(nonatomic,retain)NSObject<UIViewPassValueDelegate>*delegate;
-(IBAction)buttonClick:(id)sender;
@end
.m实现文件
#import"ValueInputView.h"
@implementationValueInputView
@synthesizedelegate;
@synthesizevalue=_value;
-(void)dealloc{
[self.valuerelease];
[superdealloc];
}
-(IBAction)buttonClick:(id)sender
{
[delegatepassValue:self.value.text];
NSLog(@"self.value.textis%@",self.value.text);
[selfdismissModalViewControllerAnimated:YES];
}
-(void)didReceiveMemoryWarning{
//Releasestheviewifitdoesn'thaveasuperview.
[superdidReceiveMemoryWarning];
//Releaseanycacheddata,images,etc.thataren'tinuse.
}
-(void)viewDidUnload{
[superviewDidUnload];
//Releaseanyretainedsubviewsofthemainview.
//e.g.self.myOutlet=nil;
}
/*
//OnlyoverridedrawRect:ifyouperformcustomdrawing.
//Anemptyimplementationadverselyaffectsperformanceduringanimation.
-(void)drawRect:(CGRect)rect{
//Drawingcode.
}
*/
@end
分享到:
相关推荐
本文实例讲述了C#使用委托(delegate)实现在两个form之间传递数据的方法。分享给大家供大家参考。具体分析如下: 关于Delegate【代理、委托】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名...
最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....
NULL 博文链接:https://dingran.iteye.com/blog/1769545
委托delegate invoke的简单源代码,适合委托初学者!
从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的。首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个...
C# 使用委托方式Usercontrol与主窗体进行消息传递
本ppt结合场景和实例对C#委托(delegate)的基础进行了讲解:包括了委托的定义,基本语法,同步异步调用,匿名委托的使用,泛型委托,lamda表达式,剖析了委托协变、委托逆变。对委托在.net 3.5框架中的身影进行了分析...
本例子演示了iPhone开发中最常用到的两个类之间互相通信的方法之一:delegate
使用.Net 的委托机制来为我们的程序提供异步操作行为. 1步, 为我们的AsyncTest(Hello方法) 声明一个委托 public delegate string AsyncEventHandler(string name); 2步,使用委托提供的BeginInvoke, EndInvoke 方法...
网上有很多关于C++ delegate机制的文章,但都讲的是函数指针的内容,上周就C++中实现C#的delegate机制的问题研究了好几天,查看了很多相关资料,才解决了问题,现将我写的C++ delegate测试程序贴出来,希望能帮到有...
c#中关于委托delegate的经典的实例,可以使我们清楚的了解delegate的使用方法及含义。
NULL 博文链接:https://stephen830.iteye.com/blog/1698438
qml中TreeView自定义数据类型,使在代理(Delegate)中能传递到更多的数据 具体可以访问博客https://www.jianshu.com/p/dc24d010e5e4
在IOS中使用委托协议在两个View之间传值,类似Android中Activity的onActivirtyResult方法
QT自定义模型Modle的实现实例和自定义委托Delegate的实现实例以及在QTableView中加载使用的实现
CSharp_Delegate C#委托 本人博客中的示例代码
01.C# 知识回顾 - 委托 delegate.pdf 01.C# 知识回顾 - 委托 delegate.pdf
Delegate '委托,带参数的方法,多线程,可以轻松在线程中传递参数,获取返回值.
但是.Net毕竟是更高级的语言,委托Delegate也更高级了,委托是一种数据接口,它包含调用目标和调用方法的指针;而在.Net中定义的委托都继承自MulticastDelegate即多播委托,所谓的多播委托是指可以包含多个调用方法...