iOS 7,UITableView和不正确的分隔线

时间:2013-11-11 09:53:32

标签: iphone objective-c uitableview ios7

我在iOS 7中遇到UITableView(样式:UITableViewStyleGrouped)和separatorInset的问题。有时,分隔符不可见。

简单地说,如果我渲染表直接加载所有数据(例如来自NSArray),则使用相同的表(完全相同的代码),分隔线是正确的(默认iOS7样式,正确的插入值)。如果我使用类似insertRowsAtIndexPaths的东西动态地将新行添加到同一个表中,则分隔符行将跨越单元格/屏幕的整个宽度(因此,没有iOS7默认样式)。

我试图在setSeparatorInset和每个单元格中使用UITableView强制'separatorInset',但这不起作用。如果我在添加新行后reloadData,则会正确显示分隔线。但这似乎不是一个很好的解决方案。

为什么分隔符间歇性地不可见的任何想法?

5 个答案:

答案 0 :(得分:12)

将此代码写入ViewDidLoad方法:

[tblView setSeparatorInset:UIEdgeInsetsZero];

答案 1 :(得分:2)

对我来说,唯一有效的方法是重新加载前一个单元格,即位于所选单元格顶部的单元格。

if (indexPath.row > 0) {
    NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row - 1 inSection:indexPath.section];
    [tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationNone];
}

答案 2 :(得分:0)

将此方法和此方法中的颜色应用到代码中。这是iOS7更新。

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

    [cell setBackgroundColor:[UIColor clearColor]];
}

答案 3 :(得分:0)

确保单元格的clipsToBounds设置为YES,但单元格的contentView设置为NO。还设置了cell.contentView.backgroundColor = [UIColor clearColor];

答案 4 :(得分:0)

使用它。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [tableView setSeparatorInset:UIEdgeInsetsZero];
   }
}