13

在谷歌、Stackoverflow 和苹果文档搜索了很多之后,我几乎放弃了。

我正在制作一个应用程序来索引客户,并且由于可能很长的列表,我使用部分索引来更快地导航。我的问题如下图所示。

http://i.stack.imgur.com/i2tTx.png

当我拖动一个项目以显示删除按钮时,它部分隐藏在我的部分索引栏下方。

就我而言,我没有设置 tableview 或 tableviewcells 宽度的代码,并且不能真正更改部分索引。

编辑:

问题是如何让表格视图单元格在它们重叠之前结束,以便删除按钮完全可见。

编辑2:

我已经尝试将单元框设置得更小,但没有任何运气。

cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width-30, cell.frame.size.height);

我也对 tableview 进行了同样的尝试,但由于它位于 UITableViewController 中,因此无法调整大小。

self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y, self.tableView.frame.size.width-30, self.tableView.frame.size.height);
4

3 回答 3

10

作为一个简单的解决方法,我们通过将索引的背景颜色设置为 clearColor 来解决索引的视觉重叠。

self.tableView.sectionIndexBackgroundColor = [UIColor clearColor];

* 这在视觉上看起来更好,但索引仍会与您的 tableViewCell 重叠。

另一种可能的解决方法是在进入编辑模式时隐藏索引栏:

// allow editing
[self.tableView setEditing:YES animated:YES];
// hides the index
self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMax;
于 2013-09-30T06:38:01.937 回答
6

inEditMode方法应该可以解决问题。下面我嵌入了一个完整的代码,它在编辑时隐藏索引并在编辑完成后再次显示它。

-(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath{
    [self inEditMode:YES];
}

-(void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath{
    [self inEditMode:NO];
}
//on self.editButtonItem click
-(void)setEditing:(BOOL)editing animated:(BOOL)animated{
    [super setEditing:editing animated:animated];
    [self inEditMode:editing];
}

-(void)inEditMode:(BOOL)inEditMode{
    if (inEditMode) { //hide index while in edit mode
        self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMax;
    }else{
         self.tableView.sectionIndexMinimumDisplayRowCount = NSIntegerMin;
    }
    [self.tableView reloadSectionIndexTitles];
}
于 2013-10-17T10:58:41.857 回答
0

只需在 cellForRowAtIndexPath 中分配任何子视图之前使用此代码

for (id object in cell.contentView.subviews)
{
    [object removeFromSuperview];
}  
于 2014-02-25T15:17:29.857 回答