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

本文详细介绍了如何在iOS环境中利用Delegate方法实现不同UIView窗口间的参数传递,包括定义委托协议、在窗口间建立委托关系以及具体实现步骤。通过实例展示了在窗口1中打开窗口2,填入数字后回传给窗口1的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值