iOS開發中QQ好友列表下拉顯示全部好友實現思路

樑森森發表於2017-06-16

在QQ的好友頁面有一個點選各個分類,然後展示分類中所有好友的效果,今天就說一說實現該效果的一個思路。

這個頁面肯定是需要一個UITableView的,在tableview的代理方法中要實現分割槽的一個方法,即要返回tableview的分割槽數。返回的分割槽數就是好友的分類數。

tableview中各個分割槽的行數就是各個好友分類中的好友數。顯示各個好友分類的檢視是各個分割槽的一個頭檢視。頭檢視會有一個點選事件,用於好友分類的展開和收起。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

方法的實現很關鍵,1.要根據section的不同返回不同的行數。   2.要根據該行的點選狀態顯示行數(有顯示所有的行數或者不顯示行數兩種狀態)。程式碼:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    GroupModel *groupModel = _dataArray[section];

    NSInteger count = groupModel.isOpened ? groupModel.groupFriends.count : 0;

    return count;

}


tableview的資料來源一般是一個陣列,陣列中會有模型,每一個分割槽對應一個模型,模式中除了有每個分割槽要顯示的資料,我們還應為模型增加一個屬性來儲存各個分割槽的點選狀態即各個好友分類是否展開

每次點選各個分割槽的頭檢視的時候需要完成兩件事:1.改變各個模型中的點選的狀態屬性  2.更新tableview的點選的分割槽。

程式碼:

- (void)clickAction:(UIButton *)btn{

    GroupModel *groupModel = _dataArray[btn.tag];

    // 改變是否顯示詳情的狀態

    groupModel.isOpened = !groupModel.isOpened;

    

    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:btn.tag] withRowAnimation:UITableViewRowAnimationAutomatic];

}

這裡我在各個分割槽的頭檢視上新增了一個按鈕。





相關文章