1. 程式人生 > >關於cell點選展開收縮的總結

關於cell點選展開收縮的總結

在最近的專案開發,為了更好的使用者體驗,專案決定使用一些cell預設展開一條,並具有點選展開和收縮的功能。經過檢視資料,後來通過cell 屬性實現了該功能,在開發中也遇到了一些坑,在此總結,以供參考。
@property (nonatomic, strong) NSIndexPath *selectedIndex;

首先宣告一個選中的index物件,注意:這裡的語義屬行,在剛開始我用的assign在一些機型上實現。

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
        self.selectedIndex
= indexPath;

設定預設選中狀態,即選中的cell的index.

  if ([indexPath isEqual: _selectedIndex] && _selectedIndex != nil  ) {
            if (_isOpen == YES) {
                  projectCell.isOpen = self.isOpen;
            }else{
                  projectCell.isOpen = NO;
            }
        } else {
            projectCell.isOpen
= NO; }

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath設定選中cell要做的事情

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSArray *indexPaths = [NSArray arrayWithObject:indexPath];

    if (self
.selectedIndex != nil && [indexPath isEqual: _selectedIndex]) { _isOpen = !_isOpen; }else if (self.selectedIndex != nil && ![indexPath isEqual: _selectedIndex]) { indexPaths = [NSArray arrayWithObjects:indexPath,_selectedIndex, nil]; _isOpen = YES; } //記下選中的索引 self.selectedIndex = indexPath; //重新整理 [tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; }

設定cell選中時的操作,當然還用要計算行高,這些我會稍後將寫個demo上傳到GitHub和大家交流,在這個開發中我充分認識到我們對底層研究的重要性!!!
歡迎大家一起交流!!!