之前一直對於代理傳值不是很瞭解很模糊,今天試着寫了個demo,
1、在需要傳值的界面聲明協議,比如從B界面傳值給A,那麼就在B界面設置代理,然後在A界面添加代理。
在B界面:
.h文件
@protocol TwoViewDelegate <NSObject>
- (void)changeValue:(NSString *)value;
@end
@interface GCTwoViewController : UIViewController
@property (nonatomic,unsafe_unretained) id<TwoViewDelegate>delegate;
@end
- (IBAction)btnc:(id)sender {
[self.delegate changeValue:self.textFiled.text];
[self dismissViewControllerAnimated:YES completion:nil];
}
#import "GCTwoViewController.h"
@interface GCViewController ()<TwoViewDelegate>
- (IBAction)btncli:(id)sender {
[self performSegueWithIdentifier:@"inputTwoView" sender:nil];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"inputTwoView"]) {
GCTwoViewController *twoView = segue.destinationViewController;
twoView.delegate = self;
}
}
- (void)changeValue:(NSString *)value
{
self.label.text = value;
}
原代碼如下: