iOS開發頁面間的通信方式

在開發過程中,頁面間的通信是避免不了的,剛開始學習的時候總是用的不夠熟練,用過這么久后,來整理一下這幾種方式。
1、直接傳值:
這種方式應該是用的最多的,當從頁面A跳轉到頁面B時,頁面B需要用到A的一些數據,這時候就可以在頁面B定義一個屬性,將這個值直接帶過來,比如:從列表頁跳轉到詳情頁的時候,詳情頁需要根據id獲取商品詳情,這時候就可以使用直接傳值的方式。使用這種方式,得保證B先實例化,再賦值!!
還可能會遇到一種情況,就是在A頁面跳轉的時候不是直接alloc的一個Controller,這時候可以根據頁面間的關系去找到需要的指針,比如用parentViewController。
2、代理(delegate)
這個也是初學的時候會用的比較多的一種方法。聲明協議,成為代理,實現代理函數即可。調用代理方法的時候,最好使用responsesToSelecter方法判斷一下代理是否響應這個方法,避免崩潰。比如:自定義了一個View,點擊里面的Button的時候需要告訴頁面刷新,這個時候就可以在View里面聲明一個協議,當點擊的時候調用協議方法,就能告訴頁面。
3、block
block是代碼塊,剛開始使用的時候會有一點難理解,不過用熟練了之后會覺得這是個很好用的東西啊。
可以直接聲明一個block:
@property (copy,nonatomic) void(^chooseItemBlock)(NSInteger param);
調用:
if (self.chooseItemBlock) {
self.chooseItemBlock(sender.tag-100);
}
也可以用來實現回調


93B0D93E-D436-4163-B745-C0E1D936995A.png

4、通知
又稱廣播,顧名思義,任何對象都可以收到這個消息,前提是注冊為這個廣播的接收者,這種方法看似方便,但是管理起來很容易出錯,形象化一些就是當你頻繁的使用廣播的時候,就能看到滿天的消息在飛,注冊為接收者的必須移除,如果出現內存泄露問題,就有可能注冊兩次,所以還是盡量避免使用廣播。不過有一點是使用通知可以監聽到系統級的變化,比如進入前臺,被kill。。。

暫時只想到這幾種,也是最常用的幾種了 ,以后再來補充

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,552評論 25 708
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,814評論 1 92
  • 基礎 1. 為什么說Objective-C是一門動態的語言? 2. 講一下MVC和MVVM,MVP? 3. 為...
    波妞和醬豆子閱讀 3,361評論 0 46
  • iOS網絡架構討論梳理整理中。。。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,259評論 1 23
  • 上學時 “這個問題你明明就會,為什么不舉手回答?。” “我害怕,沒有人舉手。而且我不是好學生。” 上班后 “剛剛發...
    我的筆記閱讀 186評論 0 0