關於cell點選展開收縮的總結
阿新 • • 發佈:2019-02-05
在最近的專案開發,為了更好的使用者體驗,專案決定使用一些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和大家交流,在這個開發中我充分認識到我們對底層研究的重要性!!!
歡迎大家一起交流!!!