`
ydbc
  • 浏览: 718543 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

iphone 使用委托(delegate)在不同的窗口之间传递数据

 
阅读更多

在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

@synthesize
delegate;
@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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics