iOS中詳解Block作為property屬性實(shí)現(xiàn)頁面之間傳值
我們可以把Block當(dāng)做Objective-C的匿名函數(shù)。Block允許開發(fā)者在兩個(gè)對象之間將任意的語句當(dāng)做數(shù)據(jù)進(jìn)行傳遞,往往這要比引用定義在別處的函數(shù)直觀。另外,block的實(shí)現(xiàn)具有封閉性(closure),而又能夠很容易獲取上下文的相關(guān)狀態(tài)信息。定義Block變量,就相當(dāng)于定義了一個(gè)函數(shù)。但是區(qū)別也很明顯,因?yàn)楹瘮?shù)肯定是在-viewDidLoad方法外面定義,而Block變量定義在了viewDidLoad方法內(nèi)部。當(dāng)然,我們也可以把Block定義在-viewDidLoad方法外部,例如上面的代碼塊printNumBlock的定義,就在-viewDidLoad外面。
第二個(gè)viewcontroller控制第一個(gè)button的title
跳轉(zhuǎn)的時(shí)候,button的selector()
- (void)SecondVc{
SecondViewController *svc = [[SecondViewController alloc] init];
// Block 傳值
svc.secondBlock = ^(){
NSLog(@"First->Second");
[self.button setTitle:@"23" forState:UIControlStateNormal];
};
[self.navigationController pushViewController:svc animated:YES];
}
第二個(gè)viewcontroller.h的聲明:
typedef void (^SecondController)(); @interface SecondViewController : UIViewController /** block */ @property (nonatomic, copy) SecondController secondBlock; @end
第二個(gè)viewcontroller.m的touchesBegan方法:
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
NSLog(@"second view controller");
if (_secondBlock) {
_secondBlock();
}
}
相關(guān)文章
iOS動(dòng)畫-定時(shí)對UIView進(jìn)行翻轉(zhuǎn)和抖動(dòng)的方法
下面小編就為大家?guī)硪黄猧OS動(dòng)畫-定時(shí)對UIView進(jìn)行翻轉(zhuǎn)和抖動(dòng)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
IOS 開發(fā)之 NSMutableArray與NSArray 的區(qū)別
這篇文章主要介紹了IOS 開發(fā)之 NSMutableArray與NSArray 的區(qū)別的相關(guān)資料,希望通過本文能掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09
ios7中UIViewControllerBasedStatusBarAppearance作用詳解
這篇文章主要介紹了 ios7中UIViewControllerBasedStatusBarAppearance作用詳解的相關(guān)資料,需要的朋友可以參考下2016-11-11
詳解iOS App中UIPickerView滾動(dòng)選擇欄的添加方法
UIPickerView組件在應(yīng)用中選擇地區(qū)等方面的運(yùn)用非常常見,能夠提供多列的選擇項(xiàng),下買呢我們就來詳解iOS App中UIPickerView滾動(dòng)選擇欄的添加方法2016-05-05
iphone的safari瀏覽器中實(shí)現(xiàn)全屏瀏覽的方法
這篇文章主要介紹了iphone的safari瀏覽器中實(shí)現(xiàn)全屏瀏覽的方法,同時(shí)介紹了Add to Home Screen功能的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-06-06

