iOS代理、block篇亭、通知傳值

一般正向傳值基本使用屬性傳值缠捌,這里不多講。如果需要逆向傳值,基本使用代理和block曼月,也可以使用通知谊却。這些基本都會(huì)使用,但是平時(shí)寫的少哑芹,所以做一個(gè)總結(jié)炎辨。

1.代理傳值
委托方:
<1>.委托方.h文件interface之上寫協(xié)議

@protocol SendValueDelegate <NSObject>
- (void)sendValue:(NSString*)value;
@end
@interface SecondViewController : UIViewController

<2>.實(shí)例化協(xié)議變量

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

<3>.協(xié)議變量響應(yīng)協(xié)議方法(傳值)

//一般寫在返回方法或viewWillDisappear中
if ([_delegate respondsToSelector:@selector(sendValue:)]) {
        [_delegate sendValue:text.text];
 }

代理方:
<1>.遵循代理協(xié)議

@interface FirstViewController ()<SendValueDelegate>

<2>.設(shè)置代理

    SecondViewController * Second = [[SecondViewController alloc]init];
    Second.delegate = self;

<3>.實(shí)現(xiàn)協(xié)議方法

- (void)sendValue:(NSString *)value{
    label.text = value;
}

做好以上六步,逆向傳值不是問(wèn)題

2.block傳值
在進(jìn)行block傳值時(shí)聪姿,因?yàn)閎lock寫法比較怪異碴萧,所以先對(duì)block做一個(gè)簡(jiǎn)單地復(fù)習(xí)。
先來(lái)一個(gè)簡(jiǎn)單的block:

BOOL (^getValue)(int) = ^(int input) { 
if (input % 2 == 0) { 
return YES;
 } else {
 return NO;
 }}; 
//調(diào)用
getValue(3);

block以后會(huì)做深入的分析末购,接下來(lái)主要是傳值部分
第一個(gè)頁(yè)面
<1>.先用typedef對(duì)block做一個(gè)簡(jiǎn)單的包裝
逆向傳值時(shí)破喻,寫在第二個(gè)頁(yè)面頭文件的interface之上

typedef void (^sendValueBlock)(NSString * firstValue);

<2>實(shí)例化這個(gè)block

@property(nonatomic,copy)sendValueBlock valueBlock;

<3>相關(guān)方法內(nèi)對(duì)block賦值

- (void)viewWillDisappear:(BOOL)animated{
if(!self.valueBlock){
    self.valueBlock(text.text);
}
}

第二個(gè)頁(yè)面
<1>在點(diǎn)擊進(jìn)入下一個(gè)頁(yè)面的方法中進(jìn)行傳值

 SecondViewController * Second = [[SecondViewController alloc]init];  
 Second.valueBlock = ^(NSString * first){
        lab.text = first;
   };

兩種方式傳值,block更簡(jiǎn)易寫盟榴,缺點(diǎn)是不大容易書寫曹质,習(xí)慣就好...

3.現(xiàn)在簡(jiǎn)單談些notification傳值
<1>發(fā)送通知,把值寫到字典中并賦給userInfo

 NSDictionary * dict = [NSDictionary dictionaryWithObject:web forKey:@"website"];
 NSNotification * notice = [NSNotification notificationWithName:@"reloadWebview" object:nil userInfo:dict];
 [[NSNotificationCenter defaultCenter]postNotification:notice];

<2>接受通知

NSNotificationCenter * reloadCenter = [NSNotificationCenter defaultCenter];
    [reloadCenter addObserver:self selector:@selector(reloadWebsite:) name:@"reloadWebview" object:nil];

<3>實(shí)現(xiàn)方法

- (void)reloadWebsite:(NSNotification *)notice{ 
    NSString * website = [notice.userInfo objectForKey:@"website"];
}

通知可能更容易理解和書寫,但是有時(shí)通知太多不太容易跟蹤擎场,三者各有各自的好處和適用場(chǎng)景咆繁,在此僅以簡(jiǎn)單記述。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末顶籽,一起剝皮案震驚了整個(gè)濱河市玩般,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌礼饱,老刑警劉巖坏为,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異镊绪,居然都是意外死亡匀伏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蝴韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)够颠,“玉大人,你說(shuō)我怎么就攤上這事榄鉴÷哪ィ” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵庆尘,是天一觀的道長(zhǎng)剃诅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)驶忌,這世上最難降的妖魔是什么矛辕? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上聊品,老公的妹妹穿的比我還像新娘飞蹂。我一直安慰自己,他們只是感情好翻屈,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布陈哑。 她就那樣靜靜地躺著,像睡著了一般妖胀。 火紅的嫁衣襯著肌膚如雪芥颈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天赚抡,我揣著相機(jī)與錄音爬坑,去河邊找鬼。 笑死涂臣,一個(gè)胖子當(dāng)著我的面吹牛盾计,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赁遗,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼署辉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了岩四?” 一聲冷哼從身側(cè)響起哭尝,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剖煌,沒(méi)想到半個(gè)月后材鹦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耕姊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年桶唐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茉兰。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尤泽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出规脸,到底是詐尸還是另有隱情坯约,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布燃辖,位于F島的核電站鬼店,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏黔龟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望氏身。 院中可真熱鬧巍棱,春花似錦、人聲如沸蛋欣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)陷虎。三九已至到踏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尚猿,已是汗流浹背窝稿。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凿掂,地道東北人伴榔。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像庄萎,于是被迫代替她去往敵國(guó)和親踪少。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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