要委托的视图控制器需要建立代理协议:
@protocol ModalViewControllerDelegate <NSObject>
-(void)changeLabelText:(NSString *)text;
@end
@interface ModalViewController : UIViewController
{
@private UITextField *_textField;
}
@property (nonatomic,assign) id <ModalViewControllerDelegate> delegate;
@end
使用代理:
#pragma mark -private
-(void)dismiss
{
//改变label的值
if ([self.delegate respondsToSelector:@selector(changeLabelText:)]) {
[self.delegate changeLabelText:_textField.text];
}
if ([[UIDevice currentDevice].systemVersion floatValue]<6.0) {
//[self dismissModalViewControllerAnimated:YES];
} else {
[self dismissViewControllerAnimated:YES completion:^{
}];
}
}
实现代理协议:
#import "ModalViewController.h"
@interface RootViewController : UIViewController <ModalViewControllerDelegate>
@end
一定要设置代理:
#pragma mark -private
-(void)presentModalVC
{
ModalViewController *modalVC=[[ModalViewController alloc]init];
//一定要设置代理
modalVC.delegate=self;
modalVC.view.backgroundColor=[UIColor yellowColor];
[self presentViewController:modalVC animated:YES completion:^{
NSLog(@"call back");
}];
[modalVC release];
}
-(void)changeLabelText:(NSString *)text
{
UILabel *label=(UILabel *)[self.view viewWithTag:102];
label.text=text;
}