您的位置:首页 > 移动开发 > IOS开发

IOS delegate 委托 使用 两个View之间传数据

2012-12-08 15:45 393 查看
今天讲述 delegate 的使用,并给出例子来说明如何使用delegate在两个View之间传送数据

1.建立一个 single view 工程

2.在viecontroller.xib文件里面放上一个button 以及一个 textfield控件

3.新建一个 objective-c protocol文件(在向导里面有这个选项的)

4.实现protocol如下

#import <Foundation/Foundation.h>

@protocol UIViewPassValueDelegate <NSObject>

-(void) passValue:(NSString*)value;

@end

5.在viewcontroll.h修改如下

#import <UIKit/UIKit.h>

#import "UIViewPassValueDelegate.h"

@interface CRViewController : UIViewController<UIViewPassValueDelegate>

{

UITextField * textValue;

}

@property(retain,nonatomic) IBOutletUITextField * textValue;

-(IBAction)buttonPressed:(id)sender;

@end

6.在viewController.m中实现如下

@synthesize textValue;

//这里是对协议的实现

-(void)passValue:(NSString *)value

{

self.textValue.text = value;

}

//这里是button按下去的触犯时间,其中CRAAViewController 是另外的一个view,后面会定义

-(IBAction)buttonPressed:(id)sender

{

CRAAViewController * aaView = [[CRAAViewControlleralloc] initWithNibName:@"CRAAViewController"bundle:[NSBundlemainBundle]];

aaView.delegate = self;

[selfsetModalTransitionStyle:UIModalTransitionStyleCoverVertical];

[selfpresentModalViewController:aaView animated:YES];

}

7.新建一个 objective-c class 继承自 UIViewController 并选择构建xib

实现头文件如下:

#import "UIViewPassValueDelegate.h"

@interface CRAAViewController : UIViewController

{

id<UIViewPassValueDelegate> * delegate;

}

@property(nonatomic,assign) id<UIViewPassValueDelegate> * delegate;

-(IBAction)buttonClicked:(id)sender;

@end

8.在.m文件里面实现如下:

@synthesize delegate;

-(IBAction)buttonClicked:(id)sender

{

[delegate passValue:@"123456"];

[selfdismissModalViewControllerAnimated:YES];

}

当然,上面有些东西没有讲到,比如将textfield以及button与变量的关联等

以上的功能主要是这样的:点击第一个视图,跳转到第二个视图,然后点击第二个视图回到第一个视图,并将第二个视图里面的值传回到第一个视图

也就实现了利用delegate在不同的view之间进行传值的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: