1. 程式人生 > >iOS Block的基本使用以及Block傳值

iOS Block的基本使用以及Block傳值

block為我們提供了一個非常便捷的方法去實現各種傳值以及回撥

合理的使用block可以減少程式碼量以及更加優雅的實現功能

現做個小整理如下:

#pragma mark About Block
    
    //block的原型:
    NSString *(^myBlock)(int);
    //上面的程式碼聲明瞭一個block(^)原型,名字叫做myBlock,包含一個int型的引數,返回值為NSString型別的指標。
    
    //block的定義:
    myBlock=^(int paramA){
        return [NSString stringWithFormat:@"Passed number:%d",paramA];
    };
    
    myBlock(2);
    
    
#pragma mark e.g.   Block Create And Usage
    
    //基本使用   返回值 UIImage object
    UIImage *oldImage=[UIImage imageNamed:@"avatar"];
    UIImage *(^myImageBlock)(UIImage*)=^(UIImage *image){
        return image;
    };
    UIImage *newImage=myImageBlock(oldImage);
    
    //基本使用  無返回值
    NSString *
[email protected]
""; void (^logBlock)(NSString *)=^(NSString *paramStr){ NSLog(@"logBlock log:%@",paramStr); }; logBlock(string); //含有block引數的函式 比較常見的型別,如網路請求中的successfulBlock //方法 - (void)turnNumberWithNumberA:(NSInteger)a NumberB:(NSInteger)b andMyBlock:(void(^)(int aa,int bb))myBlock{ int c=[[NSNumber numberWithInteger:a]intValue]; int d=[[NSNumber numberWithInteger:b]intValue]; myBlock(c,d); } //呼叫 [self turnNumberWithNumberA:1 NumberB:2 andMyBlock:^(int aa, int bb) { NSLog(@"aa is %d",aa); NSLog(@"bb is %d",bb); }]; //block在兩個檢視的傳值 Apush到B B消失時將textfield的值傳回A //B.h typedef void (^ReturnTextBlock)(NSString *showText);//給block重新命名,方便呼叫 @interface B : UIViewController @property (nonatomic, copy) ReturnTextBlock returnTextBlock;//宣告一個block屬性 - (void)returnText:(ReturnTextBlock)block;//加上後方便第A檢視書寫該block方法 @end //B.m - (void)returnText:(ReturnTextBlock)block {//block的實現方法 self.returnTextBlock = block; } - (void)viewWillDisappear:(BOOL)animated { if (self.returnTextBlock != nil) { self.returnTextBlock(self.inputTF.text);//檢視將要消失時候呼叫 } } //A.m需要push的時候呼叫 B *bVC = [[B alloc]init]; [bVC returnText:^(NSString *showText) {//定義B檢視後呼叫block self.showLabel.text = showText; }];


相關推薦

iOS Block界面反向小demo

一個 push action put btn inter text nac mic 1、在第二個視圖控制器的.h文件中定義聲明Block屬性: // 定義block @property (nonatomic, copy) void (^NextViewControlle

代理、block、通知中心

1.代理 委託者.h檔案 @protocol DBDoorHoneListTabCollectionCellDelegate <NSObject> - (void)selectedItemButton:(NSInteger)index; @end @interface DBD

Block 進行pop和

pop 在SecVC(由RootVC push而來) 中建立一個TouchView類 繼承於UIView 點選TouchView SecVC實現pop 1.給block函式型別重新命名 typedef void(^MyBlock)(); 2.將MyB

基本的前後臺

static ati 代碼 pre 成功 his type lis exp <!DOCTYPE html><html><head> <meta charset="utf-8"> <title></ti

Ajax以及接受,@ResPonseBody 和 @RequestBody

Ajax對於Java程式設計人員開說可是很重要的,可以說是必會的。 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title&

Swift 自定義表格,以及Model

func setCellWithData(model:musicModel) -> Void { self.title.text = model.title self.pic.text = model.pic self.time.t

簡單的全選和反選功能以及選中實現

//兩個按鈕 <input class="btn-primary" type="button" value="全選" id="selectBtn" onclick="selectAll()"/><input class="btn-primary" type="button" value="

Struts2常用標籤的使用以及Action

為了學習struts2框架,這次練習完成了一個簡單的功能,希望能夠在struts表單標籤的使用以及傳值方面能夠對大家的學習起到參考作用。 專案功能 專案的功能是在提交頁面輸入個人資訊之後點選提交跳轉到一個新的頁面,新的頁面會顯示之前所填寫的個人資訊。 開發環境和

iOS頁面間幾種方式

傳值方法 屬性 方法 代理 block 通知 單例 頁面間傳值有八大傳值方式,下面我就簡單介紹下頁面間常用的傳值方式,但對於每種方式的詳細介紹由於內容很多,我會把每種方式單獨列出作為一篇文章詳細介紹,本文不做詳細說明 屬性傳值 第二個介面(Det

js實現頁面跳轉,頁面A跳到另一個頁面B,以及頁面

第一個頁面: (tes1.html) <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>頁面1</title>

iOS中協議delegate的注意點

1、iOS中協議的用途一般是用來進行反向傳值,一般步驟如下: 1)宣告協議 @protocol ThirdDalegate <NSObject> -(void)printNum:(

appium ios 上滑y座標問題

按照android的滑動,比如要是向上滑動就是y座標從大滑到小,比如y座標是100,那麼相對座標就是100*0.8->100*0.2,x座標不變即可,這樣子在android上面執行沒問題,但是在ios螢幕上一直是往下滑動 appium的log打印出來是這樣的 Received the follow

ios常用的三種方式

總結我專案中常用的三種傳值方式 近期在研究Python,公司正好有Python專案,對於自己來說也算是橫向發展 1:Block傳值 場景:比如在同一個頁面(A)點選了型別,彈出新的頁面(B),這時候需要獲取新頁面點選的是哪個型別值,,所以就需要新頁

iOS中H5向native或從H5跳轉到native

本部落格遷移來自:http://www.jianshu.com/users/465865c268ed/latest_articles 由於專案中H5頁面比較多,這幾天H5頁面中有個新需求:點選H5頁面

Spinner中getResource()空指標問題以及Context問題

在封裝一個Spinner的時候,傳值報空指標異常: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content

iOS Block基本使用以及Block

block為我們提供了一個非常便捷的方法去實現各種傳值以及回撥 合理的使用block可以減少程式碼量以及更加優雅的實現功能 現做個小整理如下: #pragma mark About Block //block的原型: NSString *(^myB

iOS Block、代理、通知中心

  Joker_King  關注 2016.04.18 22:17*  字數 802  閱讀 1792 評論 7 喜歡 12 在我們需

ios block 最簡單的方法

1、在您需要傳值出去的控制器標頭檔案裡宣告: @property (nonatomic,copy) void(^stringblockr)(int age); 2、然後在你pop或者push到被傳值的頁面的方法裡,呼叫該方法: self.stringblockr(

IOS 程式碼塊之block的宣告、建立、參的基本使用

Block 是iOS在4.0之後新增的程式語法,在iOS SDK 4.0之後,block應用幾乎無處不在。 在其他語言中也有類似的概念稱做閉包(closure),比如object C的好兄弟Swift 中閉包(swift 閉包詳解)的使用跟 OC的block一樣

iOS block(逆

block是個好東西,是蘋果官方推薦的一種方法,效率高,程式碼簡單,今天用block主要是做一個簡單傳,暫時不對block詳細介紹,關於__block的用法,後期會一一介紹; 接下來,通過一個block,將 SecondViewController 的數值傳給  First