block 頁面傳值小結

来源:http://www.cnblogs.com/linzhengbo/archive/2016/06/26/5617602.html
-Advertisement-
Play Games

我以自己項目中的一個模塊為例,首先有兩個頁面,第一個頁面為顯示城市頁面,第二個頁面為選擇要使用block傳的值(城市名)。 第一個頁面中的顯示控制項: //自定義左部定位視圖 self.locView = [[LocationView alloc] initWithFrame:CGRectMake(0 ...


我以自己項目中的一個模塊為例,首先有兩個頁面,第一個頁面為顯示城市頁面,第二個頁面為選擇要使用block傳的值(城市名)。

第一個頁面中的顯示控制項:

//自定義左部定位視圖

    self.locView = [[LocationView alloc] initWithFrame:CGRectMake(0, 0, SCREENWIDTH/2-35, 25)];

    self.locView.imgView.image = [UIImage imageNamed:@"around"];

    UITapGestureRecognizer *tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cityListView)];

    [self.locView addGestureRecognizer:tapGes];

    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithCustomView:_locView];

    self.navigationItem.leftBarButtonItem = leftButton;

 

第二個頁面的選擇頁面:

首先要在.h文件中聲明block代碼塊

typedef void(^ChangeCityBlock)(NSString *cityStr);

@interface CityListViewController : UIViewController{

    ChangeCityBlock _sendBlock;

}

@property(nonatomic, copy) NSString *currentCity;

-(void)setSendBlock:(ChangeCityBlock)block;

-(ChangeCityBlock)sendBlock;

@end

到這裡準備找工作已做好,下麵是傳值關鍵

當我們從第一個頁面跳轉至第二個頁面時,我的代碼如下,僅供參考:

//城市列表

-(void)cityListView{

    CityListViewController *clVC = [[CityListViewController alloc] init];

    [clVC setSendBlock:^(NSString *cityStr) {

        _locView.cityLb.text = cityStr;

    }];

    clVC.currentCity = _locView.cityLb.text;

    [self.navigationController pushViewController:clVC animated:YES];

}

接下來,要在第二個頁面實現定義的block方法

-(void)setSendBlock:(ChangeCityBlock)block{

    if (_sendBlock != block) {

        _sendBlock = [block copy];

    }

}

-(ChangeCityBlock)sendBlock{

    return _sendBlock;

}

最後,當我們在第二個頁面確定返回的值並返回第一個頁面時,要觸發一個方法,將要返回的值傳入block代碼中

-(void)blockReturnCity:(NSString *)city{

    if (self.sendBlock) {

        self.sendBlock(city);

    }else{

        NSLog(@"沒有傳入block");

    }

    [self goback];

}

以此即可將在第二個頁面中確定的值傳到第一個頁面。

 

註:此次總結只是以為自己的iOS學習做備忘錄為目的,在思路或是步驟順序上若有混亂,請諒解!大家若有好的方法也請不吝賜教。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Android系統的開機動畫可分為三個部分,kernel啟動,init進程啟動,android系統服務啟動。這三個開機動畫都是在一個叫做 幀緩衝區(frame buffer)的硬體設備上進行渲染繪製的。http://hovertree.com/menu/android/ 在Linux內核中,每一個硬 ...
  • 如果是自己通過repo和git直接從google官網上download的源碼,請忽略這個問題,但是由於google在國內被限制登錄,通過這一種方法不是每個人都能download下來源碼,通常的做法就是從別人那拷貝,然後自己編譯,那麼通常會出現下麵的錯誤: No rule to make target ...
  • 1.統一界面管理 1.1利用一個activity去管理應用的所有的界面 1.1.1 理解Activity,Window和View之間的關係 1.1.2 避免Activity過多導致的問題, 例如:徹底退出應用,頻繁改動清單文件等 統一界面風格,降低用戶的學習成本 2.界面劃分 2.1展示效果圖,將界 ...
  • 當我們在使用tableview時,往往需要在cell左滑時顯示一個或是多個按鈕,但系統預設的只可顯示一個,如常見的刪除按鈕,那麼當我們的需求要求要有多個按鈕時又該怎麼辦呢,我們往下看。 首先,現看看系統的按鈕(只顯示一個按鈕時) //設置cell左滑後的刪除按鈕文字 -(NSString *)tab ...
  • //佈局相關<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" an ...
  • 這個項目是本人原創:要轉載,請說明下:http://www.cnblogs.com/blogwithstudyofwyn/p/5618107.html 項目的地址:https://github.com/Shangshanroushui/ShoppingCart.git 該程式是個一元奪寶的的購物車。 ...
  • ...
  • 一.什麼是Service Service是一個應用程式組件,它是安卓實現程式後臺運行的一個解決方案。 二.分類 服務有兩種類別started、bound.但是一個服務類所要繼承的類是一樣的,都是Service類。也就是說,一個服務,可以包含上面兩種運行方式的服務,只是與它重載的方法有關,如果重寫了o ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...