协议委托代理传值
实现协议方法
通过setDelegate来设置代理对象,最典型的例子是常用的TableView.代理一般用于回传结果
优点:支持它的类有详尽和具体信息
缺点:该类必须支持委托。某一时间只能有一个委托连接到某一对象
1.声明代理
2.写代理方法 哪声明地方调用代理方法 就在哪写delegate属性
窗体间传值代码
other.h
#import <UIKit/UIKit.h> @protocol myDelegate <NSObject> @required -(void)sendStr:(NSString *)str; @end @interface OtherViewController : UIViewController @property (nonatomic, assign) id<myDelegate> delegate; @end
other.m
@interface OtherViewController ()
@property (weak, nonatomic) IBOutlet UITextField *myText;
@end
@implementation OtherViewController
- (IBAction)showNew:(id)sender {
if ([self.delegate respondsToSelector:@selector(sendStr:)]) {
[self.delegate sendStr:self.myText.text];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
view.m
#import "ViewController.h"
#import "OtherViewController.h"
@interface ViewController ()<myDelegate>
- (IBAction)ShowNew:(UIButton *)sender;
@property (weak, nonatomic) IBOutlet UILabel *myLib;
@property (nonatomic, copy) NSString *tempStr;
@end
@implementation ViewController
-(void)sendStr:(NSString *)str
{
NSLog(@"传值结果:%@",str);
self.myLib.text = str;
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)ShowNew:(UIButton *)sender {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"OtherViewController" bundle:nil];
OtherViewController *ovc = sb.instantiateInitialViewController;
ovc.delegate = self;
[self presentViewController:ovc animated:YES completion:nil];
}
@end

浙公网安备 33010602011771号