5分鐘學(xué)會Block和Delegate反向傳值

過程:有A和B控制器井辜,A先跳轉(zhuǎn)到B著摔,然后B傳值給A雪位。

一、Block

1.首先在B控制器的.h文件中定義一個沒有返回值梨撞,參數(shù)類型為NSString的block屬性雹洗。
@property (copy, nonatomic)void(^block)(NSString *str);

2.在A控制器中,給B控制器的block屬性進行賦值卧波。

//A跳轉(zhuǎn)B
- (void)push{
    BViewController *vc = [[BViewController alloc]init];
    vc.block = ^void(NSString *str){
    //這里就可以拿到B控制器傳遞過來的值
        NSLog(@"%@",str);
    };
    [self.navigationController pushViewController:vc animated:true];
}

3.在B控制器回跳到A的方法中調(diào)用block时肿,調(diào)用block之前最好先判斷block是否為空,不為空才調(diào)用港粱,否則程序崩潰螃成。

//B回跳A
- (void)pop{
    //裝逼寫法
    //!self.block? : self.block(@"回調(diào)");
    //一般寫法
    if (self.block) {
        self.block(@"回調(diào)");
    }
    [self.navigationController popViewControllerAnimated:YES];
}

二、Delegate

1.首先在B的.h文件中聲明協(xié)議和協(xié)議方法查坪。

@protocol BViewControllerDelegate <NSObject>

- (void)myDelegate:(NSString *)str;

@end

2.在B的.h中聲明一個協(xié)議屬性寸宏,這里要注意用assign或weak修飾,
weak和assign是一種“非擁有關(guān)系”的指針偿曙,通過這兩種修飾符修飾的指針變量氮凝,都不會改變被引用對象的引用計數(shù)。但是在一個對象被釋放后望忆,weak會自動將指針指向nil罩阵,而assign則不會竿秆。所以,似乎用weak更安全些稿壁。

@property (assign,nonatomic)id<BViewControllerDelegate>delegate;

3.在A的.m中幽钢,導(dǎo)入B控制器,實現(xiàn)B里的delegate傅是,并實現(xiàn)delegate的方法匪燕。

#import "BViewController.h"
@interface AViewController ()<BViewControllerDelegate>

@end

//BViewControllerDelegate的方法
- (void)myDelegate:(NSString *)str{
    //在這里拿到B傳過來的值
    NSLog(@"%@",str);
}

4.在A的.m中,在push到B界面的push方法之前喧笔,B對象的初始化之后谎懦,指定A對象為B對象的代理。

//A跳轉(zhuǎn)B
- (void)push{
    BViewController *vc = [[BViewController alloc]init];
    vc.delegate = self;
    [self.navigationController pushViewController:vc animated:true];
}

5.在B的.m中溃斋,在pop方法里界拦,判斷在指定的代理類中是否實現(xiàn)了該協(xié)議方法,[self.delegate 協(xié)議方法名稱:(參數(shù)梗劫,也就是要傳回的數(shù)據(jù)) ]享甸,確保執(zhí)行時無此方法時不崩潰 。

//B回跳A
- (void)pop{
  //裝逼寫法
//    ![self.delegate respondsToSelector:@selector(myDelegate:)]? : [self.delegate myDelegate:@"回調(diào)"];
  //一般寫法
  if ([self.delegate respondsToSelector:@selector(myDelegate:)]) {
      [self.delegate myDelegate:@"回調(diào)"];
  }
  [self.navigationController popViewControllerAnimated:YES];
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梳侨,一起剝皮案震驚了整個濱河市蛉威,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌走哺,老刑警劉巖蚯嫌,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丙躏,居然都是意外死亡择示,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門晒旅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栅盲,“玉大人,你說我怎么就攤上這事废恋√革” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵鱼鼓,是天一觀的道長拟烫。 經(jīng)常有香客問我,道長迄本,這世上最難降的妖魔是什么硕淑? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上喜颁,老公的妹妹穿的比我還像新娘。我一直安慰自己曹阔,他們只是感情好半开,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赃份,像睡著了一般寂拆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抓韩,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天纠永,我揣著相機與錄音,去河邊找鬼谒拴。 笑死尝江,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的英上。 我是一名探鬼主播炭序,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼苍日!你這毒婦竟也來了惭聂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤相恃,失蹤者是張志新(化名)和其女友劉穎辜纲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拦耐,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡耕腾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了杀糯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幽邓。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖火脉,靈堂內(nèi)的尸體忽然破棺而出牵舵,到底是詐尸還是另有隱情,我是刑警寧澤倦挂,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布畸颅,位于F島的核電站,受9級特大地震影響方援,放射性物質(zhì)發(fā)生泄漏没炒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一犯戏、第九天 我趴在偏房一處隱蔽的房頂上張望送火。 院中可真熱鬧拳话,春花似錦、人聲如沸种吸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坚俗。三九已至镜盯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猖败,已是汗流浹背速缆。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恩闻,地道東北人艺糜。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像幢尚,于是被迫代替她去往敵國和親倦踢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,125評論 29 470
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 1,962評論 0 7
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,712評論 0 4
  • 多線程侠草、特別是NSOperation 和 GCD 的內(nèi)部原理辱挥。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,004評論 0 12
  • 經(jīng)好友推薦注冊的這個賬號边涕,當(dāng)時還是個懵懵懂懂的學(xué)生晤碘。轉(zhuǎn)眼已經(jīng)兩年多了,卻只字未落功蜓,內(nèi)心忍不住再次感嘆時光的...
    梔簡閱讀 275評論 0 1