1. 程式人生 > 實用技巧 >UISB 多頁面傳值

UISB 多頁面傳值

通過代理 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