我有一个带有自定义单元格的UITableView,还有一个自定义标题,如下所示:
--------------------
| Header |
--------------------
| cell |
| cell |
| etc |
每当我将其置于编辑模式时,为了删除单元格,它看起来像这样
--------------------
| Header |
--------------------
- | cell
- | cell
- | etc
正如您所看到的,表格单元格向右移动,为减号图标腾出空间。但是,标题保持在相同的位置。如何将标题移到右侧,以匹配下面的单元格x-postion?
答案 0 :(得分:0)
您可以在标题中添加标签 - (UIView *)tableView:(UITableView *)tv viewForHeaderInSection:(NSInteger)部分如下:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, y, self.tableView.bounds.size.width - 45,50)];
label.font = [UIFont systemFontOfSize:14];
label.backgroundColor = [UIColor greenColor];
if(self.tableView.editing && section==0)
{
label.frame = CGRectMake(0,0,self.tableView.bounds.size.width,150);
NSString *NewSection = @"My new header message in edit mode d\n\n OK";
label.text = NewSection;
}
else {
label.frame = CGRectMake(0,0,self.tableView.bounds.size.width,40);
label.text = [self tableView:tableView titleForHeaderInSection:section];
}
[sectionHeader addSubview:label]; 然后将其添加到标题视图
希望它对你有所帮助。
答案 1 :(得分:0)
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView* viewObj = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 40];
UILabel *headerLabel = [[UILabel alloc] init];
headerLabel.font = [UIFont systemFontOfSize:14];
headerLabel.backgroundColor = [UIColor greenColor];
if(self.tableView.editing && section==0)
{
headerLabel.frame = CGRectMake(cellpositionX,0,self.tableView.bounds.size.width - cellpositionX,40);
NSString *NewSection = @"My new header message in edit mode d\n\n OK";
headerLabel.text = NewSection;
}
else {
headerLabel.frame = CGRectMake(0,0,self.tableView.bounds.size.width,40);
headerLabel.text = [self tableView:tableView titleForHeaderInSection:section];
}
[viewObj addSubview:headerLabel];
return viewObj;}
在上面的代码中,您可以传递cellpositionX中的x值。
每次TableView启动和结束编辑时。你需要重新加载TableView
我希望这能解决你的问题
答案 2 :(得分:-1)
为编辑模式标题创建了一个不同的笔尖,然后仅在编辑时显示:
-(UIView *)tableView:(UITableView *)tv viewForHeaderInSection:(NSInteger)section {
// CustomHeader creates the header view
CustomHeader *tableHeader;
if (self.tableView.editing)
{
tableHeader = (CustomHeader *)[CustomHeader headerFromNibNamed:@"CustomHeaderEditMode"];
} else {
tableHeader = (CustomHeader *)[CustomHeader headerFromNibNamed:@"CustomHeader"];
}
return tableHeader;
}