欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

iOS如何實現(xiàn)block傳值-創(chuàng)新互聯(lián)

小編給大家分享一下iOS如何實現(xiàn)block傳值,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),寧德企業(yè)網(wǎng)站建設(shè),寧德品牌網(wǎng)站建設(shè),網(wǎng)站定制,寧德網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,寧德網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

首先我總結(jié)了一下block的公式:

  1. 步驟1.block 的聲明 返回值類型(^block 的名字)(參數(shù)列表);

  2. 步驟2.block 實現(xiàn) block的名字 = ^(參數(shù)列表)(){};

  3. 步驟3.block 的調(diào)用 block的名字();

下面是一個簡單的block

//  聲明 
  void(^blockName)(int num,NSString *string); 
//  實現(xiàn) 
  blockName = ^(int num,NSString *string) 
  { 
    NSLog(@"%d,%@",num,string); 
  }; 
//  調(diào)用 
  blockName(520,@"phyone_"); 
}

由該例可以看出block的代碼執(zhí)行順序和其他的代碼執(zhí)行順序不一樣 它是先執(zhí)行聲明代碼 然后執(zhí)行調(diào)用代碼 最后才執(zhí)行實現(xiàn)代碼 由此我們利用block的回調(diào)性質(zhì) 達到我們傳值效果 當然這只是在一個頁面的一段代碼 只是說明了它具有傳值的作用 下面我們來試試 多頁面之間的block反向傳值 由于是反向傳值 所以我們創(chuàng)建兩個ViewController (ViewController,Next_ViewController)先由ViewController跳到Next_ViewController里將里面的值反向傳給ViewController
以下是代碼

ViewController.m里面

- (void)viewDidLoad { 
  [super viewDidLoad]; 
  self.view.backgroundColor = [UIColor purpleColor]; 
 UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(100, 200, 200, 100)]; 
  lable.backgroundColor = [UIColor brownColor]; 
  [self.view addSubview:lable]; 
   
  UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap)]; 
  [self.view addGestureRecognizer:tap]; 
} 
- (void)tap 
{ 
  Next_ViewController *NVC = [[Next_ViewController alloc]init]; 
  NVC.block = ^(NSString *content){ 
    NSLog(@"%@",content); 
    UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 100, 100)]; 
    [button setTitle:content forState:UIControlStateNormal]; 
    button.backgroundColor = [UIColor orangeColor]; 
    [self.view addSubview:button]; 
  }; 
  [self presentViewController:NVC animated:YES completion:nil]; 
}

Next_ViewController.h里面

//block 是分配在棧里面的用copy 
@property(nonatomic,copy) void(^block)(NSString *content);

Next_ViewController.m里面

<p ><span >{</span></p>
<p ><span >  void(^imageNameBlock_1)(NSString *imageName);</span></p>
<p ><span >  void(^lableBlock)(NSString *tontentText);</span></p>
<p ><span >}</span></p>
- (void)viewDidLoad { 
  [super viewDidLoad]; 
  self.view.backgroundColor = [UIColor orangeColor]; 
  UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
  button.frame = CGRectMake(100, 200, 100, 50); 
  [button setTitle:@"123456" forState:UIControlStateNormal]; 
  button.backgroundColor = [UIColor redColor]; 
  [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
  [self.view addSubview:button]; 
} 
- (void)buttonAction:(UIButton *)sender 
{ 
//  點擊按鈕 返回上一個頁面 同時通過block 把這個值傳到上一個頁面 
  self.block(sender.titleLabel.text); 
  [self dismissViewControllerAnimated:nil completion:nil]; 
}

另外:block 還有兩個問題

1.怎么改變block里面的值

用上面的代碼 在ViewController.m viewDidLoad 里面 添加代碼

 1.局部變量 
 定義一個圖片名字的Block 
 */ 
//  局部變量 
   
  void(^imageNameBlock)(NSString *imageName); 
//  如果想修改Block里面的值 需添加__block修飾 
   
//  __block UIImage *image; 
  imageNameBlock = ^(NSString *imageName) 
  { 
    image = [UIImage imageNamed:imageName]; 
    self.view.backgroundColor = [UIColor colorWithPatternImage:image]; 
  }; 
  imageNameBlock(@"17.jpg");

就會出現(xiàn) Use of undeclared identifier 'image' 錯誤情況 原因是我們試圖改變block里面的值 解決辦法就是 添加 __block 修飾(解注釋

__block UIImage *image;) 就行了

2.block的循環(huán)引用

用上面的代碼 在ViewController.m viewDidLoad 里面 添加代碼

//  全局變量 
//  block循環(huán) 引用 解決 我們用弱引用 __block 
  __weak ViewController *VC = self; 
   
  __block UIImage *image = nil; 
  imageNameBlock_1 = ^(NSString *imageName) 
  { 
    image = [UIImage imageNamed:imageName]; 
    VC.view.backgroundColor = [UIColor colorWithPatternImage:image]; 
  }; 
  UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(100, 200, 200, 100)]; 
  lable.backgroundColor = [UIColor brownColor]; 
  [self.view addSubview:lable]; 
   
  UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap)]; 
  [self.view addGestureRecognizer:tap];

再添加兩個方法

- (void)loadData 
{ 
  imageNameBlock_1(@"17.jpg"); 
} 
 
- (void)viewWillAppear:(BOOL)animated 
{ 
  [self loadData]; 
}

以上是“iOS如何實現(xiàn)block傳值”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享題目:iOS如何實現(xiàn)block傳值-創(chuàng)新互聯(lián)
文章起源:http://chinadenli.net/article0/dchdoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、自適應網(wǎng)站商城網(wǎng)站、網(wǎng)站建設(shè)Google、標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
欧美做爰猛烈叫床大尺度| 日本一区不卡在线观看| 日韩在线视频精品视频| 欧美日本精品视频在线观看| 国产欧美一区二区久久| 欧美黑人黄色一区二区| 欧美日韩精品一区免费| 国产香蕉国产精品偷在线观看| 亚洲男人的天堂色偷偷| 中文字幕精品一区二区年下载| 激情亚洲一区国产精品久久| 激情五月激情婷婷丁香| 亚洲av在线视频一区| 中文字幕一区二区免费| 久久国内午夜福利直播| 久久99青青精品免费观看| 国产精品欧美激情在线| 亚洲熟女少妇精品一区二区三区| 国产色一区二区三区精品视频 | 日韩一区二区三区有码| 国产又猛又大又长又粗| 东京不热免费观看日本| 欧美日韩国内一区二区| 中国少妇精品偷拍视频| 亚洲精品国产美女久久久99| 少妇熟女亚洲色图av天堂| 女同伦理国产精品久久久| 久久本道综合色狠狠五月| 风间中文字幕亚洲一区| 日韩欧美国产精品中文字幕| 最近日韩在线免费黄片| 不卡一区二区在线视频| 99国产精品国产精品九九| 一本色道久久综合狠狠躁| 少妇福利视频一区二区| 亚洲精品福利入口在线| 欧美午夜色视频国产精品| 欧美精品亚洲精品日韩精品| 欧美三级大黄片免费看| 深夜日本福利在线观看| 日韩aa一区二区三区|