亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

詳解iOS頁面傳值(順傳 逆傳)

2020-07-26 02:58:37
字體:
來源:轉載
供稿:網友

代理協議傳值

順傳

假設A為第一個視圖控制器,B為第二個視圖控制器

在A中導入B的.h文件

場景:A向B傳值

第一步:在B的.h中定義一個content屬性

@interface SecondViewController : UIViewController@property(nonatomic,copy)NSString *contents;@end

第二步:在點擊A中的按鈕方法里面給B的content屬性賦值

- (void)buttonAction:(UIButton *)button { NSLog(@"進入第二頁"); SecondViewController *secondVC = [SecondViewController alloc] init]; secondVC.contents = self.label.text; [self.navigationController pushViewController:secondVC animated:YES]; }

第三部:在B使用content的屬性給相應的控件賦值

@implemention SecondViewController- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; self.navigationItem.title = self.contents; }

逆傳

代理傳值使用在兩個界面傳值的之后,從后向前傳值。

假設A為第一個視圖控制器,B為第二個視圖控制器

場景:B向A傳值

第一步:首先在B的.h文件中聲明協議和協議方法

第二步在B的.h中聲明一個代理屬性,這里主要注意用assign或weak修飾,weak和assign是一種非擁有關系的指針,通過這兩種修飾符修飾的指針變量,都不會改變被引用的對象的引用計數。但是在一個對象被釋放后,weak會自動將指針指向nil,而assign則不會。所以,用weak更安全些。

@property (nonatomic,weak)id<協議名>delegate;

#pragma mark 這里是B的.h#import<UIKit/UIKit.h>@protocol CsutomTabBarDelegate<NSObject>// 把btn的tag傳出去的方法- (void)selectedIndexWithTag:(NSInteger)tag;@end@interface CustomTabBarView : UIView//聲明一個代理屬性delegate@property (nonatomic,weak)id<CsutomTabBarDelegate>delegate;@end

第三部:在B即將POP回前一個界面的時候,在pop方法的上一行使用協議方法傳遞數據[self.delegate 協議方法名:(參數,也就是要傳回的數據)

#pragma mark 這里是B的.m// 判斷在制定的代理類中是否實現了該協議方法// 確保執行時無此方法時不崩潰if([self.delegate respondsToSelector:@selector(selectedIndexWithTag:)]){ // 執行代理方法 [self.delegate selectedIndexWithTag:(sender.tag - 1000)];}else{ NSLog(@"協議中的方法沒有實現");}

在A的.m中,在push到B界面方法之前,B對象的初始化之后,指定A對象為B對象的代理(B對象).delegate = self此時會有黃色警告,因為沒有準守協議

#pragma mark A的.m中// 指定代理,B就是customViewcustomView .delegate = self;

第五步:在A的延展或者A的.h文件中導入協議名稱<協議名稱>

#pragma mark A的.m的延展里,A就是RootTabBarController// 協議導入@interface RootTabBarController () <CustomTabBarDelegate>@end

第六步:在A的.m中事項協議方法,取得參數中得知,呈現在當前界面上

#pragma mark A的.m// 實現代理方法,這里就可以使用從B傳來的值了- (void)selectedIndexWithTag:(NSIngeter)tag {  self.selectedIndex = tag; }

使用Block頁面間傳值

第一步:在B的.h中重定義一個block,用這個重定義的block類型聲明一個類的屬性這里要注意用copy修飾block屬性

#pragma mark B的.h #import <UIKit/UIKit.h> // block傳值 // 重命名一個有參無返回值的block類型 typedef void(^passValue)(NSInteger tag); @interface CustomTabBarView : UIView  //用這個block類型定義一個屬性 @property (nonatomic,copy)passValue passValueTag; @end

第二步:在B的.m的返回方法中調用block的方法

#pragma mark B的.m的返回方法中 //調用block方法 self.passValueTag(sender.tag - 1000);

第三步:在A的.m中創建B的實例的地方,為B的block屬性賦值,也就是說,寫好這個block中的內容,類似于給B的某一個屬性賦初值

// 設置block內容  customView.passValueTag = ^(NSInteger tag)  {   self.selectedIndex = tag;  };

沒有引用局部變量的Block內存存儲在全局區

引用了局部變量的Block內存存儲在棧區

當對Block進行copy操作的時候Block的內存存在堆區

Block的循環引用問題

當Block是self的一個屬性的時候

self.circleBlock = ^(){my_self.navigationItem.title = @"Hello";};

會導致self的引用計數+1,最終導致循環引用

在ARC下使用weak修飾變量防止循環引用

在非ARC下使用block修飾變量防止循環引用

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人国产精品av| 亚洲精品一区二区三区不| 国产999视频| 日本sm极度另类视频| 国产一区二区三区欧美| 亚洲美女在线观看| 久久九九精品99国产精品| 久久久最新网址| 国产v综合ⅴ日韩v欧美大片| 91在线高清免费观看| 69久久夜色精品国产69| 亚洲第一网站男人都懂| 91极品视频在线| 亚洲性生活视频在线观看| 国产成人aa精品一区在线播放| 2023亚洲男人天堂| 久久精品99久久香蕉国产色戒| 亚洲国产精品一区二区久| 久热精品视频在线观看| 欧美日韩免费在线| 久久久久国产视频| 亚洲精品日韩久久久| 国产亚洲精品激情久久| 亚洲第一精品电影| 夜色77av精品影院| 韩国视频理论视频久久| 国产精品爽黄69| 人妖精品videosex性欧美| 97久久精品国产| 精品日本美女福利在线观看| 精品欧美一区二区三区| 国产精品96久久久久久又黄又硬| 国产欧美日韩免费| 亚洲国产97在线精品一区| 成人久久久久久久| 国产91免费观看| 91精品国产乱码久久久久久蜜臀| 欧美综合一区第一页| 91性高湖久久久久久久久_久久99| 精品美女国产在线| zzjj国产精品一区二区| 亚洲精品久久久久中文字幕二区| 日韩大胆人体377p| 亚洲一区二区三区视频播放| 亚洲亚裔videos黑人hd| 亚洲欧洲中文天堂| 欧美日韩免费在线观看| 国产欧美日韩免费看aⅴ视频| 国产精品海角社区在线观看| 欧美国产日韩视频| 国产91在线高潮白浆在线观看| 久久综合伊人77777蜜臀| 激情懂色av一区av二区av| 亚洲国产精品va在线看黑人| 亚洲欧美精品suv| 国产精品老女人精品视频| 成人黄色av免费在线观看| 国产第一区电影| 成人激情视频在线观看| 欧美肥婆姓交大片| 成人黄色免费网站在线观看| 国内精品视频一区| 久久在精品线影院精品国产| 国产成人亚洲综合青青| 亚洲偷熟乱区亚洲香蕉av| 45www国产精品网站| 国产成一区二区| 91精品久久久久久久久久久久久| 日韩av电影手机在线观看| 精品夜色国产国偷在线| 91国产视频在线播放| 成人自拍性视频| 国产成人一区二区三区电影| 亚洲性线免费观看视频成熟| 奇米影视亚洲狠狠色| 中文字幕在线看视频国产欧美| 亚洲福利视频在线| 久久九九全国免费精品观看| 国产一区av在线| 日韩av电影国产| 日韩精品在线第一页| 亚洲美女av网站| 欧美在线中文字幕| 91日韩在线播放| 亚洲最大成人免费视频| 日韩欧美大尺度| 欧美精品一区在线播放| 亚洲国模精品私拍| 亚洲精品美女在线观看| 日韩精品高清在线| 欧美精品免费播放| 久久久久久久久久久国产| 秋霞成人午夜鲁丝一区二区三区| 久久亚洲私人国产精品va| 欧美亚洲激情视频| 亚洲精品美女久久久| 国产精品88a∨| 日本精品在线视频| 久久精视频免费在线久久完整在线看| 亚洲美女视频网站| 日韩在线观看免费高清完整版| 亚洲免费电影一区| 国产久一一精品| 成人黄色片在线| 久久影院模特热| 国产成人一区二区在线| 亚洲free性xxxx护士白浆| 欧美性高跟鞋xxxxhd| 久久69精品久久久久久国产越南| 国产精品久久久久秋霞鲁丝| 国产精品亚洲欧美导航| 欧美大尺度激情区在线播放| 久久中文久久字幕| 欧美福利视频在线| 成人妇女免费播放久久久| 91福利视频在线观看| 久久久久久高潮国产精品视| 国产精品福利在线观看网址| 亚洲一区二区久久| 91天堂在线观看| 国产精品美女久久久免费| 色婷婷**av毛片一区| 欧美成人午夜激情在线| 国产日产欧美a一级在线| 国产精品欧美日韩一区二区| 91精品久久久久久久久中文字幕| 欧美激情乱人伦一区| 51视频国产精品一区二区| 成人写真视频福利网| 欧美精品videos| 亚洲欧美日韩中文在线| www.美女亚洲精品| 久久视频在线播放| 日韩美女av在线免费观看| 国产成人小视频在线观看| 久久精品成人欧美大片| 81精品国产乱码久久久久久| 国产精品热视频| 欧美精品videofree1080p| 国产丝袜精品第一页| 成人a级免费视频| 精品久久久久久国产| 国内外成人免费激情在线视频网站| 精品人伦一区二区三区蜜桃网站| 日韩欧美国产免费播放| 亚洲男人的天堂在线播放| 亚洲人成在线播放| 97超级碰碰人国产在线观看| 久久久久成人网| 国产成人精品久久二区二区| 国产91精品视频在线观看| 亚洲天堂免费在线| 这里只有精品视频| 国产精品美女免费| 亚洲第一免费播放区| 日本成人精品在线| 国产精品永久免费| 亚洲国产小视频| 日韩视频免费看| 97免费在线视频| 国产精品久久视频| 久久人人97超碰精品888| 久久久国产精品亚洲一区| 91九色视频导航|