今天讲述 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之间进行传值的功能。