标签:
- //在子视图的.h文件中
//定义快代码
typedef void(^textFieldChangedBlock)(NSString *text);
- (id)initWithBlock:(textFieldChangedBlock)block;
//实例化方法
-(id)initWithBlock:(textFieldChangedBlock)block
{
self = [super init];
if (self) {
_changedBlock = block;
}
return self;
}
//定义成员巴拉ing接收块代码
{ textFieldChangedBlock _changedBlock; }
- //在父视图实例化子视图时使用快代码,并把相应代码写入块代码内。
DetailViewController *detail = [[DetailViewController alloc]initWithBlock:^(NSString *text) {
[self.label setText:text];
}];
//
presentViewController是推出是个新的视图 也就是子视图detail[self presentViewController:detail animated:YES completion:nil];
- //在需要的时候执行父视图传入的快代码:_changedBlock(self.textField.text);
- (void)click
{
//返回
_changedBlock(self.textField.text);
[self dismissViewControllerAnimated:YES completion:nil];
}
子视图定义协议 @protocal
@protocol DetailViewControllerDelegate <NSObject>
- (void)detailDone:(NSString *)text;
@end
定义代理 @property (weak,nonatomic)id<MyHeadDelegate>delegate;
@property(weak,nonatomic) id<DetailViewControllerDelegate>delegate;
代理执行协议方法
- (void)detailDone:(NSString *)text
{
[self.label setText:text];
}
父视图遵守协议 .h文件。<myHeaderDelegate>
@interface MainViewController : UIViewController<DetailViewControllerDelegate>
@end
父视图执行代理方法
- (void)click
{
//返回
[_delegate detailDone:self.textField.text];
[self dismissViewControllerAnimated:YES completion:nil];
}
设置代理 [header setDeleagte : self]
- (void)click
{
DetailViewController *detail = [[DetailViewController alloc]init];
[detail setDelegate:self];
[self presentViewController:detail animated:YES completion:nil];
}
标签:
原文地址:http://www.cnblogs.com/zhjl/p/4229280.html