选择部分中的最后一行后显示分隔线

Posted

技术标签:

【中文标题】选择部分中的最后一行后显示分隔线【英文标题】:Separator line showing up after selection of last row in section 【发布时间】:2014-01-20 16:32:22 【问题描述】:

我在所有 UITableView 中都发现了一种奇怪的行为。这让我开始发疯了。

我有简单风格的 UITableViews。该部分的最后一行没有分隔符,它只是融入到部分标题中(顺便说一下默认用法)。检查最后一行的高度,Apple 似乎将其增大 1px 以从单元格中删除分隔符高度。问题是当我选择行但拖走时,分隔线出现并且永远不会消失。如果我返回一个视图并返回,它默认为关闭。

我在所有表格视图、普通单元格和自定义单元格中都看到了这一点。当我取消选择时,我可以做些什么来确保最后一个分隔符远离?仅 ios 7 构建。运行当前版本,没有测试版。

【问题讨论】:

你有解决办法吗? 您找到解决方案了吗?我现在也有同样的问题:( 【参考方案1】:

对我来说,重新加载单元有助于解决一些分隔线问题:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];


- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath

    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

【讨论】:

这确实有效,但前提是您选择并放手。如果我选择它并拖走,这条线就会卡在那里。关闭,但不完全。 用我忘记的另一个函数更新我的答案 - 但是,不要淡出选择;)也许你可以尝试将它延迟几毫秒。 尝试了新方法,但仍然具有相同的行为。取消突出显示,分隔符仅存在一瞬间。似乎很接近,但延迟不会飞。我想知道为什么苹果有这种方式。我猜这是一个错误,所以我可能只是提交一个雷达。【参考方案2】:

如果将情节提要中的 tableView 的样式从普通更改为分组,则不会出现此行为。不过,它会在您的部分上方为您提供一个部分标题。要摆脱它,请执行此操作 -

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    return 0.01f;

【讨论】:

我没有使用故事板,所以不是这样。 所有故事板属性都有代码等效项,您可以在代码中更改

以上是关于选择部分中的最后一行后显示分隔线的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 UITableView 部分中的最后一个单元格强制全宽分隔符

在一组行之后显示分隔线,而不是 DataTable 中的每一行

word2016 星号分隔线*****变成方黑色分隔线

删除部分的最后一行后,应用程序崩溃

重新加载表格视图后出现最后一个静态单元格分隔线

如何为自定义 UITableView 标题部分笔尖添加分隔线? [复制]