标签:
- //在子视图的.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