编辑 TableView 时自定义 TableCell 中没有缩进

Posted

技术标签:

【中文标题】编辑 TableView 时自定义 TableCell 中没有缩进【英文标题】:No Indentation in Custom TableCell while Editing TableView 【发布时间】:2011-06-23 17:39:10 【问题描述】:

我今天花了很多时间试图弄清楚如何让我的自定义表格单元格(使用 XIB 构建)在编辑模式下停止缩进。

我到处查看,例如:Prevent indentation of UITableViewCell (contentView) while editing 和 How can I change the amount of indentation on my custom UITableViewCell while editing?,但似乎遇到了与 OP 遇到的与细胞跳来跳去的问题相同的问题。

有没有人找到更好的方法来解决这个问题?

基本上我有一个 CustomTableCell,当我在该单元格上进入编辑模式时,我希望该单元格保持在原位,没有缩进。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您应该使用 tableView:shouldIndentWhileEditingRowAtIndexPath: 委托方法来返回 No。如果这不起作用,请转到 .xib 并打开实用程序视图(右侧的那个)。从那里禁用文件检查器选项卡中的“使用自动布局”并在属性检查器中禁用“编辑时缩进”。

【讨论】:

【参考方案2】:

您应该使用委托方法tableView:shouldIndentWhileEditingRowAtIndexPath: 并返回false

来自文档:“当表格视图处于编辑模式时,询问代理指定行的背景是否应该缩进。”

【讨论】:

这应该是公认的答案,因为它不是任何形式的 hack,而是正确的方法【参考方案3】:

有趣。我设法使用 hack 使链接中发布的解决方案工作:在 layoutSubviews 我刚刚做了 self.indentationWidth = 0.0001; :.不是最干净的解决方案,但它有效。

【讨论】:

布局子视图在哪里?是细胞吗?或单元格背景视图或什么?谢谢!【参考方案4】:

我发现,如果您将自定义单元格的子视图放在大约 300 到 320 点宽的 UIView 上,然后将所述子视图添加到单元格的内容视图中,它不会在触发编辑模式时移动子视图。

【讨论】:

有趣。我设法使用 hack 使链接中发布的解决方案工作:在 layoutSubviews 我刚刚做了 self.indentationWidth = 0.0001; :\。不是最干净的解决方案,但它有效。

以上是关于编辑 TableView 时自定义 TableCell 中没有缩进的主要内容,如果未能解决你的问题,请参考以下文章

TableView 滚动时自定义 UITableViewCell 发生变化

编辑单元格时自定义 UITableViewCell 反向缩进

实现 willTransitionToState: 时自定义 UITableViewCell 不显示编辑控件

调用 reloadData 时自定义 UITableViewCell 内存泄漏

Django:在编辑模型时自定义 FileField 值

添加 CSS 时自定义代码编辑器无法正常工作和中断