iOS表分区头和表视图的编辑模式

原文链接:https://my.oschina.net/zyboy/blog/617427

设置分区头信息
-(NSString )tableView:(UITableView )tableView titleForHeaderInSection:(NSInteger)section

设置分区头视图
-(UIView )tableView:(UITableView )tableView viewForHeaderInSection:(NSInteger)section

表视图分区头到顶部时仍然存在,
TableView的style应该为Plain
-(NSString )tableView:(UITableView )tableView titleForHeaderInSection:(NSInteger)section{
return @“分区头”;
}

设置表头视图
UIImageView *headerImageView = [[UIImageView alloc]init];
headerImageView.frame = CGRectMake(0, 0, 0, 0);
headerImageView.image = [UIImage imageNamed:@“xxx.jpg”];
self.tableView.tableHeaderView = headerImageView;

表视图的编辑模式需要配置导航栏右侧的编辑按钮
可以使用系统版的editButtonItem来配置导航栏的右侧按钮,但文字是英文版
self.navigationItem.rightBarButtonItem = self.editButtonItem;
还可以自定义
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@”编辑” style:UIBarButtonItemStylePlain target:self action:@selector(clickEditButton:)];
点击编辑按钮,切换表格的编辑模式
-(void)clickEditButton:(UIBarButtonItem *)item
{
[self.tableView setEditing:!self.tableView.editing animated:YES];

item.title = self.tableView.editing?@"完成":@"编辑";

}

表格的编辑功能
问1:当前行是否可编辑
-(BOOL)tableView:(UITableView )tableView canEditRowAtIndexPath:(NSIndexPath )indexPath
{
if (indexPath.row == 0) {
return NO;
}else{
return YES;
}
}
问2:当前行的编辑样式是什么
-(UITableViewCellEditingStyle)tableView:(UITableView )tableView editingStyleForRowAtIndexPath:(NSIndexPath )indexPath
{
if (indexPath.row == self.allCitys.count-1)
{
return UITableViewCellEditingStyleInsert;
}else{
return UITableViewCellEditingStyleDelete;
}
//return UITableViewCellEditingStyleDelete|UITableViewCellEditingStyleInsert;//可以多选
}
//答1:点击编辑按钮后做什么
-(void)tableView:(UITableView )tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath )indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete){//点击的是删除按钮
// 1.先删除行所在的数据模型中的数据
[self.allCitys removeObjectAtIndex:indexPath.row];

    // 2.更新tableView的显示
    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

}else{//点击的是增加按钮

    // 1.先将数据增加到数据模型中
    City *city = [[City alloc]init];
    city.name = @"test";
    city.population = 1000;
    [self.allCitys addObject:city];

    // 2.刷新表格
    NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:self.allCitys.count-1 inSection:0];
    [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

}

}
行的移动

//问1:改行是否可以移动
-(BOOL)tableView:(UITableView )tableView canMoveRowAtIndexPath:(NSIndexPath )indexPath
{
return YES;
}

//答1:移动后做什么
-(void)tableView:(UITableView )tableView moveRowAtIndexPath:(NSIndexPath )sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
//1.按照旧的位置,找到原始的数据
City *city = self.allCitys[sourceIndexPath.row];

//2.将数据从原位置上移除
[self.allCitys removeObjectAtIndex:sourceIndexPath.row];

//3.再将数据按照新的位置插入回数组
[self.allCitys insertObject:city atIndex:destinationIndexPath.row];

}

转载于:https://my.oschina.net/zyboy/blog/617427

上一篇:Largest Contentful Paint (LCP)


下一篇:后缀三姐妹 笔记