今天分享下cell的單選,自定義的,不是下圖這種網上找到的打對勾的,我搜了好久,基本上都是打對勾的文章,就決定自己寫一篇。基本上自己的app都會有一個風格吧,咱也不能一直用打對勾的方式去做(看起來是不是很low)。
我們要實現的是下面的這種形式。瞬間好看了很多,高大上了很多是吧。
具體我來給大家介紹一下。我這種方法有可能不是很好,有大神來,歡迎多多交流。
首先在你自定義的cell裡面加入一個UIImageView,因為你肯定要有選擇和未選擇兩張圖片的吧,所以這個UIImageView來切換圖片。
@property(nonatomic,strong)UIImageView *seletImage;
注意:這裡面為啥沒用button,我主要考慮的是按鈕如果只有一個小圓圈這麼大的話,就不好點擊。我的方法主要是結合UITableView中didSelectRowAtIndexPath這個代理方法實現的。
當然,你需要在你自己的cell裡面加入這個子視圖,以及初始化這個對象。下面代碼寫在相應的位置。
//添加到cell上 [self.contentView addSubview:self.seletImage]; //初始化 -(UIImageView *)seletImage{ if (!_seletImage) { _seletImage = [[UIImageView alloc]init]; } return _seletImage; } //坐標位置 [self.seletImage mas_makeConstraints:^(MASConstraintMaker *make) { @strongify(self); make.right.equalTo(self.contentView.mas_right).with.offset(-15); make.centerY.equalTo(self.self.contentView); make.height.mas_equalTo(22); make.width.mas_equalTo(22); }];
然後我們還需要一個cell的ViewModel來記錄cell中的各種數值變化,在這個ViewModel裡我們加入一個參數用來判斷是否這一行cell被點擊。
@property(nonatomic)BOOL isSelected;
然後在回到這個cell中,我們需要用RAC來觀察這個isSelected的參數變化,替換圖片
[[[RACObserve(self.viewModel, isSelected) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread] subscribeNext:^(NSString *x){ @strongify(self); if ([x boolValue]==YES) { [self.seletImage setImage:[UIImage imageNamed:@"alarmsetting_selected"]]; }else{ [self.seletImage setImage:[UIImage imageNamed:@"alarmsetting_notselected"]]; } }];
好了,最後一步,讓我們回到這個cell對應的ViewController中,在didSelectRowAtIndexPath上做文章。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ [tableView deselectRowAtIndexPath:indexPath animated:YES]; //遍歷viewModel的數組,如果點擊的行數對應的viewModel相同,將isSelected變為Yes,反之為No for (NSInteger i = 0; i<[self.viewModel.ItemArray count]; i++) { ItemViewModel *itemViewModel = self.viewModel.ItemArray[i]; if (i!=indexPath.row) { itemViewModel.isSelected = NO; }else if (i == indexPath.row){ itemViewModel.isSelected = YES; } } [self.tableView reloadData]; }
這裡簡單解釋一下,因為每一個cell都有一個對應的ViewModel,這個ViewModel又是放在ViewController的ViewModel數組中的。因此遍歷,取出對應點擊行數的ViewModel,將參數更換,實現此效果。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
【iOS中UITableView Cell實現自定義單選功能】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!