麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

iOS階段學習第32天筆記(頁面傳值方法介紹)

2019-11-14 18:25:41
字體:
來源:轉載
供稿:網友

iOS學習(UI)知識點整理

一、界面傳值方法  

1、方法一  Block傳值  通過SubView視圖的Block向View視圖傳值改變View視圖的背景色 實例代碼: 


1)SubViewController.h 文件的代碼實現

1 #import <UIKit/UIKit.h>2 @interface SubViewController : UIViewController   3 @PRoperty (nonatomic,copy) void(^callback)(UIColor *color); 4 -(void)login:(NSString *)username passWord:(NSString *)password complete:(void(^)(UIColor *color))callback; 5 @end

2)SubViewController.m 文件代碼實現

 1  #import "SubViewController.h"  2   @interface SubViewController ()  3   @end  4 @implementation SubViewController  5 - (void)viewDidLoad { 6     [super viewDidLoad];  7     self.view.backgroundColor = [UIColor grayColor];  8     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem  alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self 9  action:@selector(testAciton)]; 10 } 12 -(void)testAciton13 {14      _callback([UIColor blueColor]); 15     [self.navigationController popViewControllerAnimated:YES];16 }17 -(void)login:(NSString *)username password:(NSString *)password complete:(void(^)(UIColor *color))callback19 {20       callback([UIColor redColor]);21 } 22 @end

3)ViewController.m 文件的代碼實現:

 1 #import "ViewController.h" 2 #import "SubViewController.h" 3 @interface ViewController () 4 @end 5 @implementation ViewController 6 - (void)viewDidLoad { 7     [super viewDidLoad];      8     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks 
target:self
action:@selector(testAciton)]; 11 }12 -(void)testAciton13 {14 SubViewController *subvc = [[SubViewController alloc]init];15 // subvc.callback --> void(^)(UIColor *) 16 //傳參與回調17 [subvc login:@"Admin" password:@"123" complete:^(UIColor *color) {18 self.view.backgroundColor = color;19 }]; 21 [subvc setCallback:^(UIColor *color) {22 self.view.backgroundColor = color;23 }];24 [self.navigationController pushViewController:subvc animated:YES];25 } 26 @end

2、方法二   通知中心傳值 實例代碼: 

1)添加一個通知中心管理類  KKNotificationCenter.h 文件實現代碼

 1 #import <Foundation/Foundation.h> 2 @interface KKNotification : NSObject 3 //觀察者對象 4 @property (nonatomic,strong) id observer; 5 //觀察者通知執行方法 6 @property (nonatomic,assign) SEL selector; 7 //觀察者的鍵值 8 @property (nonatomic,copy) NSString *name; 9 //返回參數10 @property (nonatomic,strong) id object;11 @end12 13 @interface KKNotificationCenter : NSObject14 +(id)defaultCenter;15 -(void)addObserver:(id)observer selector:(SEL)sel name:(NSString *)name object:(id)object;16 -(void)postNotificationName:(NSString *)name object:(id)object;17 @end

2)KKNotificationCenter.m 文件實現代碼

 1 #import "KKNotificationCenter.h" 2 @implementation KKNotification 3 @end 4 @implementation KKNotificationCenter 5 { 6     NSMutableArray *_notArray; 7 } 8  9 +(id)defaultCenter10 {11     static KKNotificationCenter *_q = nil;12     if (!_q) {13         _q = [[KKNotificationCenter alloc]init];14     }15     return _q;16 } 18 - (id)init19 {20     self = [super init];21     if (self) {22         _notArray = [[NSMutableArray alloc]init];23     }24     return self;25 }26 27 -(void)addObserver:(id)observer selector:(SEL)sel name:(NSString *)name object:(id)object28 {29    KKNotification *not = [[KKNotification alloc]init];30     not.observer = observer;31     not.selector = sel;32     not.name = name;33     [_notArray addObject:not];34 }35 36 -(void)postNotificationName:(NSString *)name object:(id)object37 {38     for (KKNotification *not in _notArray) {39         if ([not.name isEqualToString:name]) {40             not.object = object;41             [not.observer performSelector:not.selector withObject:not];42         }43     }44 }45 @end

3)在ViewController.m 視圖文件中注冊一個觀察者 實例代碼

 1 #import "ViewController.h" 2 #import "SubViewController.h" 3 #import "KKNotificationCenter.h" 4 @interface ViewController () 5 @end 6 @implementation ViewController   7 - (void)viewDidLoad { 8     [super viewDidLoad];      9     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self10  action:@selector(testAciton)];11     12 //在通知中心里注冊一個觀察者:self13 //name:作為觀察者的鍵值14 [[KKNotificationCenter defaultCenter]addObserver:self selector:@selector(notAction:) 15 name:@"changeColor" object:nil];16   }17 18 -(void)notAction:(KKNotification *)not19 {20     self.view.backgroundColor = not.object;21 }22  23 -(void)testAciton24 {25     SubViewController *subvc = [[SubViewController alloc]init]; 27     [subvc setValue:@20 forKey:@"age"];28     [subvc performSelector:@selector(testAciton) withObject:nil];  30     [self.navigationController pushViewController:subvc animated:YES];31 }32 @end

4)SubViewController.h 文件中的代碼實現

 1 #import <UIKit/UIKit.h> 2 @interface SubViewController : UIViewController 3 { 4 @private 5     int age; 6 }  8 -(void)test; 10 @end

5)SubViewController.m   文件中執行通知的代碼實現

 1 #import "SubViewController.h" 2 #import "KKNotificationCenter.h" 3 @interface SubViewController () 4 @end 5 @implementation SubViewController 6 - (void)viewDidLoad { 7     [super viewDidLoad]; 8    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks
target:self
action:@selector(testAciton)];10 } 12 -(void)testAciton13 {14 //通知中心廣播15 //廣播使用的名字,必須和注冊時,使用的名字一致16 [[KKNotificationCenter defaultCenter]postNotificationName:@"changeColor" object:[UIColor redColor]]; 17 [self.navigationController popViewControllerAnimated:YES];18 } 20 -(void)test21 {22 NSLog(@"%d",age);23 } 24 @end

3、方法三   Target-Action 傳值 通過SubViewController傳值改變ViewControllerd的背景色 實例代碼

1)SubViewController.h 文件中的代碼實現

 1  #import <UIKit/UIKit.h> 2 //枚舉 區別控制器類型 3 typedef NS_ENUM(NSUInteger, PlayerController) { 4     PlayerControllerLeft, 5     PlayerControllerRight, 6     PlayerControllerCenter, 7     PlayerControllerUp, 8     PlayerControllerDown, 9 };10 11 @interface SubViewController : UIViewController12 -(void)addTarget:(id)obj action:(SEL)action forEvents:(PlayerController)events;13 @end

2)SubViewController.m 文件中的代碼實現

 1 #import "SubViewController.h" 2 @interface SubViewController () 3 { 4     id _leftObj; 5     id _rightObj; 6     SEL _leftSelector; 7     SEL _rightSelector; 8 } 9 @end10 @implementation SubViewController11 - (void)viewDidLoad {12     [super viewDidLoad];  14     self.view.backgroundColor = [UIColor grayColor]; 15     self.navigationItem.rightBarButtonItem  = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
target:self
action:@selector(leftAction)];18 }19 20 -(void)addTarget:(id)obj action:(SEL)action forEvents:(PlayerController)events21 {22 switch (events) {23 case PlayerControllerLeft:24 {25 _leftObj = obj;26 _leftSelector = action;27 }28 break;29 case PlayerControllerRight:30 {31 _rightObj = obj;32 _rightSelector = action;33 }34 break; 36 default:37 break;38 }39 } 41 -(void)leftAction42 {43 [_leftObj performSelector:_leftSelector withObject:nil]; 45 [self.navigationController popViewControllerAnimated:YES];46 } 48 @end

3)ViewController.m 文件中的代碼實現

 1 #import "ViewController.h" 2 #import "SubViewController.h" 3 @interface ViewController () 4 @end 5 @implementation ViewController 6 - (void)viewDidLoad { 7     [super viewDidLoad]; 8     UIButton *btn 9     = [UIButton buttonWithType:UIButtonTypeCustom];10     [btn addTarget:self action:@selector(clickAction) forControlEvents:UIControlEventTouchUpInside];11     btn.frame = CGRectMake(10, 100, 300, 50);12     btn.backgroundColor = [UIColor blueColor];13     [self.view addSubview:btn]; 15 }16 17 -(void)clickAction18 {19     SubViewController *subvc = [[SubViewController alloc]init]; 21     [subvc addTarget:self action:@selector(leftAction) forEvents:PlayerControllerLeft]; 23     [subvc addTarget:self action:@selector(rightAction) forEvents:PlayerControllerRight]; 25     [self.navigationController pushViewController:subvc animated:YES];26 } 28 -(void)leftAction29 {30     self.view.backgroundColor = [UIColor yellowColor];31 } 33 -(void)rightAction34 {35     self.view.backgroundColor = [UIColor redColor];36 } 38 @end

4、方法四 代理傳值  通過SubViewController傳值改變ViewControllerd的背景色 實例代碼

1) SubViewController.h文件中的代碼實現

 1 #import <UIKit/UIKit.h> 2 //協議的本質就是一個方法列表 3 @protocol Protocal <NSObject> 4 -(void)changeTitle:(NSString *)title; 5 -(void)changeBackColor:(UIColor *)color; 6 -(void)changeViewColor:(UIColor *)color; 7 @end 8 @interface SubViewController : UIViewController 9 @property (nonatomic,assign) id<Protocal> delegate;10 @end

2)SubViewController.m文件中的代碼實現

 1 #import "SubViewController.h" 2 #import "ViewController.h" 3 @interface SubViewController () 4 @end 5 @implementation SubViewController 6  7 - (void)viewDidLoad { 8     [super viewDidLoad]; 9     self.title = @"界面二";10     self.view.backgroundColor = [UIColor grayColor];11     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks 
target:self
action:@selector(backAction)];13 }14 15 -(void)backAction16 {17 // NSArray *arr = self.navigationController.viewControllers; 18 // UIViewController *vc = arr[arr.count - 2]; 19 // ViewController *vc = (ViewController *)_delegate; 21 [_delegate changeTitle:@"home"]; 22 [_delegate changeBackColor:[UIColor blueColor]]; 23 [_delegate changeViewColor:[UIColor yellowColor]]; 25 [self.navigationController popViewControllerAnimated:YES]; 27 }28 -(void)dealloc29 {30 NSLog(@"----------------------");31 }32 @end

3)ViewController.h文件中的代碼實現

 1 #import <UIKit/UIKit.h> 2 #import "SubViewController.h"  4 @interface ViewController : UIViewController<Protocal>  6 -(void)changeTitle:(NSString *)title; 7 -(void)changeBackColor:(UIColor *)color; 8 -(void)changeViewColor:(UIColor *)color; 10 @end

4)ViewController.m文件中的代碼實現

 1 #import "ViewController.h" 2 #import "SubViewController.h"  3 @interface ViewController () 4 { 5     UIView *_v; 6     SubViewController *subvc; 7 } 8 @end 10 @implementation ViewController 12 - (void)viewDidLoad {13     [super viewDidLoad]; 14     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
target:self
action:@selector(pushAction)];17 self.title = @"首頁"; 18 _v = [[UIView alloc]initWithFrame:CGRectMake(100, 200, 200, 100)];19 [self.view addSubview:_v];20 _v.backgroundColor = [UIColor redColor]; 21 subvc = [[SubViewController alloc]init];22 subvc.delegate = self; 23 }-(void)pushAction26 {27 [self.navigationController pushViewController:subvc animated:YES];28 }29-(void)changeViewColor:(UIColor *)color31 {32 _v.backgroundColor = color;33 } -(void)changeTitle:(NSString *)title36 {37 self.title = title;38 } -(void)changeBackColor:(UIColor *)color41 {42 self.view.backgroundColor = color;43 } @end

5、方法五  屬性傳值  通過FirstViewController傳值改變SubViewControllerd的背景色 實例代碼

1)SubViewController.h文件中的代碼實現

1 #import <UIKit/UIKit.h> 2 @interface SubViewController : UIViewController 3 @property(nonatomic,strong) NSString *mtitle; 4 @property(nonatomic,strong) UIColor *color; 5 @end

2)SubViewController.m 文件中的代碼實現

 1 #import "SubViewController.h" 2  @interface SubViewController () 3 @end 4 @implementation SubViewController 5 - (void)viewDidLoad { 6 [super viewDidLoad];  self.title=_mtitle; 9self.view.backgroundColor=_color;}12 @end

3)FirstViewController.m 文件中的代碼實現

 1 #import "FirstViewController.h" 2 #import "SubViewController.h" 3 @interface FirstViewController () 4 @end 5 @implementation FirstViewController 6 - (void)viewDidLoad { 7     [super viewDidLoad]; 8     self.view.backgroundColor=[UIColor whiteColor]; 9     UIButton *button=[[UIButton alloc]init];10     button.frame=CGRectMake(80, 100, 200, 30);11     button.backgroundColor=[UIColor blackColor];12     [button setTitle:@"下一頁" forState:UIControlStateNormal];13     [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];14     [button addTarget:self 15 action:@selector(touchButton:) forControlEvents:UIControlEventTouchUpInside]; 16     [self.view addSubview:button];17 }18 19 -(void)touchButton:(UIButton*)button{  20     button.backgroundColor=[UIColor grayColor];     21  22     SubViewController *subVC=[[SubViewController alloc]init];23     subVC.mtitle=@"頁面二";24     subVC.color=[UIColor redColor];25     [self.navigationController pushViewController:subVC animated:YES];26 }27 @end

 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久国产精品免费观看 | 日韩欧美精品中文字幕 | 日韩精品中文字幕在线观看 | 欧美在线 | 亚洲 | 国产成人在线免费看 | 99精品视频免费看 | 销魂美女一区二区 | 毛片免费一区二区三区 | 超碰97最新 | 欧美精品网址 | 粉嫩蜜桃麻豆免费大片 | 欧美一级黄色片免费观看 | 国产亚洲精品久久久久久久久久 | 在线播放av片 | 精精国产xxxx视频在线野外 | 中国美女一级黄色大片 | 狠狠久久伊人中文字幕 | 久久www视频| 亚洲日本韩国精品 | 日韩av有码在线 | 狠狠操天天射 | 免费看成年人网站 | 精品国产99久久久久久宅男i | 香蕉久草在线 | 在线播放中文 | 黄网站在线免费 | 欧美视频在线一区二区三区 | 国产精品一 | 视频一区 日韩 | 久久亚洲精品久久国产一区二区 | 色婷婷久久久久久 | 一级做a爰片性色毛片2021 | 国产精品自拍啪啪 | 国产精品爱久久久久久久 | 国产精品视频一区二区三区四 | 俄罗斯16一20sex牲色另类 | 国产一区二区三区四区精 | 久久草草影视免费网 | 毛片在线免费 | 精品一区二区三区在线观看视频 | 亚洲va久久久噜噜噜久牛牛影视 |