首页
/
每日頭條
/
圖文
/
ios qq通知不顯示内容
ios qq通知不顯示内容
更新时间:2024-11-17 09:26:26

實現效果如圖所示,點擊好友分組展開分組下的所有好友。再次點擊收回分組。當一個分組處于展開狀态時點擊其他分組,展開點擊的分組并同時收回之前已經展開的分組。

ios qq通知不顯示内容(QQ列表是如何實現的)1

該效果的難點在于:

1.分組的展開與回收

2.點擊不同分組時回收之前的分組

分組的顯示通過tableView的header實現。每個分組下對應的好友通過tableViewCell實現。

我們通過自定義tableView的header來實現分組效果。自定義header代碼如下

在自定義header中我們通過button的點擊來實現好友列表的展開與關閉。

因為button我們在view中創建所以我們通過代理将button的點擊事件代理到controller中。

注意在此的GroupMode類屬性。

該屬性的目的是便于我們使用屬性的setter方法賦值,也是為了後面用KVO監聽屬性值的變化而存在的。

自定義header實現文件

ios qq通知不顯示内容(QQ列表是如何實現的)2

這裡寫了一個類方法。我們用重用的方式創建header.

ios qq通知不顯示内容(QQ列表是如何實現的)3

這裡我們用系統自帶的layoutSubviews方法來設置空間的frame.當然我們也可以在創建控件的過程中直接設置frame.

ios qq通知不顯示内容(QQ列表是如何實現的)4

使用屬性的setter方法賦值,并設置觀察者觀察GroupModel屬性的isOpen屬性。

注意這裡KVO觀察的isOpen屬性的目的就是為了标記當前分組的打開關閉狀态。

roate方法的作用是旋轉分組最左邊的三角圖片。

ios qq通知不顯示内容(QQ列表是如何實現的)5

在button的點擊事件中通過自省讓代理執行方法。

這裡需要注意的是,在該方法也就是分組被點擊的過程中需要不斷地改變分組的狀态屬性的值進而讓我們一會在controller中通過該屬性值刷新界面。

ios qq通知不顯示内容(QQ列表是如何實現的)6

這裡isOpen屬性的目的是為了标記分組的打開或者關閉狀态。

注意這裡的friends這個數組屬性,我們來看一下數據結構

Plist數據文件結構

ios qq通知不顯示内容(QQ列表是如何實現的)7

通過數據我們可以看出每個分組裡都一個數組,該數組裡是分組下每個好友的數據信息,所以這裡friends數組屬性的目的就是為了儲存每個分組下的好友model的。實現代碼如下

分組對應的GroupModel的實現文件

ios qq通知不顯示内容(QQ列表是如何實現的)8

在給分組model賦值的過程中獲取并封裝好友model。

下面我們來看Controller裡的實現。

ListTableViewController的實現文件

ios qq通知不顯示内容(QQ列表是如何實現的)9

dataArray屬性用來儲存分組的model類。

注意在此的GroupModel類屬性,該屬性的目的是為了接收上一次已經展開的分組對應的model類。

是為了用戶點擊了不同的分組而之前的分組已經展開時回收之前的分組而存在的。

因為我們當點擊了不同的分組時不能确定之前我們點擊并已經展開的是哪個分組,所以用該屬性儲存上一次對應的分組。

方便我們之後刷新界面。原理與點擊空白回收鍵盤的原理是類似的。

ios qq通知不顯示内容(QQ列表是如何實現的)10

在返回每個分區有幾行cell時,因為每個分區的cell個數是要根據是否點擊分組而展開的。

所以通過isOpen屬性來判斷該分組是否已經展開返回對應的cell行數。

ios qq通知不顯示内容(QQ列表是如何實現的)11

這是代碼的核心,重中之重。

在button的代理方法裡,首先判斷當前點擊的是否是之前展開的分組,如果不是,将之前的分組的model的isOpen設置成NO.刷新界面。

這樣在刷新界面的過程中因為isOpen屬性為NO,所以該分組下的cell個數為零。效果為回收效果。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
薩克斯演奏之前的組裝方法(薩克斯演奏技巧探究)
薩克斯演奏之前的組裝方法(薩克斯演奏技巧探究)
     接着,當然要說說吹奏薩克斯的基本方法了:   要成功地演奏好薩克斯管,首先必須訓練自己對音樂的感受力及理解能力,平時要多學習一點薩克斯管以外的理論。薩克斯管的演奏其實包括兩個大部分,其一就是對基本功的訓練,内容包括:好的演奏姿勢、口形、運氣的方法、音色、熟練的指法、清晰敏捷的吐音;其二就是技巧。技巧是建立在基本功的基礎上的,奏效果。一般情況下常用的...
2024-11-17
《五個哥哥終于找到了我》(5個哥哥尋遍萬裡為其追兇)
《五個哥哥終于找到了我》(5個哥哥尋遍萬裡為其追兇)
  兄弟遇害後,五個兄弟為了給弟弟一個公道,持續追兇堅持了一年多,跋山涉水跨越萬裡這樣的一份情誼令人十分感動,他們的努力會換來自己想要的答案嗎?一起去看看今天的這起五兄弟追兇吧。      代家五兄弟雨夜追兇   在風雨交加的夜晚,代家兄弟們的心中燃起了一抹希望的火焰。他們深信,正義終将到來,兇手将無處可逃。無論多麼漫長的黑夜,黎明終将到來,揭開案件的真相,...
2024-11-17
丹佛斯變頻器運行參數說明(丹佛斯變頻器用于礦井通風風機上)
丹佛斯變頻器運行參數說明(丹佛斯變頻器用于礦井通風風機上)
  改善地下通風系統的運行成本确保礦井的可靠通風對于地下礦井工作人員的健康和安全來說至關重要。可靠通風對于确保充分排除柴油機的微粒等物質是必需的。通風運行成本在礦場總電能成本中一般都占有很大比例,如果能夠以最高效的方式進行通風則可以節省大量運營成本。   衆所周知,使用變頻器最靈活、最節能且維修成本最低的礦井通風風機控制方法。用于控制住地面通風風機、輔助通風...
2024-11-17
樹莓派3和樹莓派3b(測試樹莓派3B:)
樹莓派3和樹莓派3b(測試樹莓派3B:)
        開發能力進一步增強需使用專用電源适配器   -      樹莓派屬于起步很早但配置較低的電子制作模闆之一,很長時間以來性能落後是一大诟病,今天,最新的樹莓派3B型将有助于改變這一尴尬現狀。   樹莓派(Raspberry Pi)是流行的電子制作模闆之一,類似于PC上的準系統,它将除了存儲之外的功能整合在撲克大小的主闆上,剩下的就是系統安裝和軟...
2024-11-17
農村山上的野果有幾種(農村山坡上一野果樹)
農村山上的野果有幾種(農村山坡上一野果樹)
  回想起以前,在農村的秋冬季節裡,漫山遍野都是熟透的野果,雖然那會沒有過多的錢去買各種美味進口水果,但是能夠有吃不完的野果子,這都讓兒時在鄉下的孩子們十分滿足了。所以,今天還是給大家介紹一款在農村很常見的野果,看看小夥伴們究竟有多少人都見過吧!      農村山坡上一“野果樹”,可結出小柿子,風幹在樹上,十多元一斤!   今天給大家介紹的這種植物,在鄉下地...
2024-11-17
Copyright 2023-2024 - www.tftnews.com All Rights Reserved