UISB 多頁面傳值
阿新 • • 發佈:2020-10-14
通過代理 delegate
VCSecond。h
#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN //定義一個協議 檢視控制器二協議 @protocol VCSecondDelegate <NSObject> //定義一個協議函式,改變背景顏色 -(void) changecolor:(UIColor*) color; @end @interface VCSecond : UIViewController // 定義一個代理物件 //代理物件執行協議函式 //通過代理物件實現協議函式 達到代理物件改變本身屬性的目的 //代理物件一定要實現代理協議@property (assign,nonatomic)NSInteger tag; @property (assign,nonatomic)id<VCSecondDelegate> delegate; @end
VCSecond。m
#import "VCSecond.h" @interface VCSecond () @end @implementation VCSecond - (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem* btn= [[UIBarButtonItem alloc] initWithTitle:@"change color" style:UIBarButtonItemStyleDone target:self action:@selector(pressesChanged)]; self.navigationItem.rightBarButtonItem=btn; } -(void)pressesChanged{ // 代理物件呼叫事件操作 [_delegate changecolor:[UIColor redColor]]; } @end
VCFirst。h
#import <UIKit/UIKit.h> #import"VCSecond.h" NS_ASSUME_NONNULL_BEGIN @interface VCFirst : UIViewController -(void) changecolor:(UIColor*) color; @end NS_ASSUME_NONNULL_END
#import <UIKit/UIKit.h> #import "VCSecond.h" NS_ASSUME_NONNULL_BEGIN @interface VCFirst : UIViewController -(void) changecolor:(UIColor*) color; @end NS_ASSUME_NONNULL_END
VCFirst。m
#import "VCFirst.h" #import "VCSecond.h" @interface VCFirst () @end @implementation VCFirst - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } -(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { VCSecond* vc= [[VCSecond alloc] init]; // 將當前控制器作為代理物件賦值 vc.delegate=self; vc.view.backgroundColor = [UIColor orangeColor]; [self.navigationController pushViewController:vc animated:YES]; } -(void)changecolor:(UIColor *)color { self.view.backgroundColor = color; } @end