在实际的过程中,我们或多或少能遇到这样的图,就是上边红框固定,但是底下的要显示可选状态,这个一共有两种方法
- 1.将红框设置为
tableview.tableheaderview
- 2.全用cell
我是比较推荐使用第二种方法,第一种或多或少有的不明智,现在聊聊如何通过第二中方法制作的
*1.设置
self.tableView.editing = YES;
(一定要有这一步,否则无效)
*2.设置好要去现实的cell样子
//设置数据源,以及返回cell的样子
- (void)setupTableViewFirstSec{
SEUsePlatAddFriendModel * friendsNewM = [[SEUsePlatAddFriendModel alloc] init];
friendsNewM.imgstr = @"contact_cell_newfriends";
friendsNewM.appName = @"搜索";
SEUsePlatAddFriendModel * mygroupM = [[SEUsePlatAddFriendModel alloc] init];
mygroupM.imgstr = @"contact_cell_mygroup";
mygroupM.appName = @"已加入的群组";
self.firstSecArr = @[friendsNewM,mygroupM];
[self.beGroupedFriends addObject:self.firstSecArr];
}
#pragma mark - 内部方法
- (void)jumpToSearchVC:(UIGestureRecognizer *)tap{
SEEntireSearchController *searchVC = [[SEEntireSearchController alloc] initWithIsInTwitter:NO];
[self.navigationController pushViewController:searchVC animated:YES];
}
#pragma mark - 数据源方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
SEPhoneLinkManCell *cell = [SEPhoneLinkManCell phoneLinkManCellWithTableView:tableView];
NSArray *t = self.beGroupedFriends[indexPath.section];
if (indexPath.section==0) {
if (indexPath.row == 0) {
UITableViewCell *sCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:nil];
SESearchView *sV = [[SESearchView alloc] init];
[sCell.contentView addSubview:sV];
sV.frame = CGRectMake(0, 0, ScreenWidth, kSEPhoneLinkManCellHeightIInMyContacts);
[sV addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(jumpToSearchVC:)]];
cell = sCell;
}else{
cell.assModel = t[indexPath.row];
cell.tintColor = [AppConfig colorForEa5757];
}
}else{
cell.profile = t[indexPath.row];
cell.tintColor = [AppConfig colorForEa5757];
}
return cell;
}
*3.通过代理方法确定那个可以滑动,那个不可以滑动
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section == 0) {
return NO;
}else{
return YES;
}
}
*4.确定如果可以滑动,他要显示的样式
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
return UITableViewCellEditingStyleNone;
}else{
return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
}
}
说在后边
为啥self.tableView.editing = YES;
一定要写?
有其他操作,或者替换图片的需求,可以看看这个文章。iOS自定义tableView多选cell选中样式