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實(shí)現(xiàn)文件切片儲存并且上傳(仿斷點(diǎn)續(xù)傳機(jī)制)
這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)文件切片儲存并上傳仿斷點(diǎn)續(xù)傳機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12iOS 仿微博客戶端紅包加載界面 XLDotLoading效果
這篇文章主要介紹了iOS 仿微博客戶端紅包加載界面 XLDotLoading,需要的朋友可以參考下2017-02-02IOS開發(fā)UIPasteboard類的粘貼板全面詳解
這篇文章主要為大家介紹了IOS開發(fā)UIPasteboard類的粘貼板全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06總結(jié)iOS App開發(fā)中控制屏幕旋轉(zhuǎn)的幾種方式
這篇文章主要介紹了iOS app開發(fā)中控制屏幕旋轉(zhuǎn)的方法總結(jié),分為自動旋轉(zhuǎn)和手動旋轉(zhuǎn)以及強(qiáng)制旋轉(zhuǎn)三種情況,代碼為Objective-C語言,需要的朋友可以參考下2016-02-02