ios - deleteRowsAtIndexPaths 重置自定义单元格

标签 ios swift uitableview

我对 Swift 和 iOS 比较陌生,我有一个问题 - 我有一个扩展 UITableViewCell 的自定义 SwipeCell 类。这是一个可以左右滑动的单元格,每侧都有按钮。出于某种原因,如果我在用户滑动单元格时将按钮设置在单元格的框架之外,它们会出现但无法调用操作,所以我的解决方案是使单元格比实际更宽(以便按钮可以放入其中)。因为它是以这种方式完成的,所以我的单元格必须默认为左侧按钮的总宽度(假设为 100)有一个偏移量,所以它的位置是 X:-100。

这很好,单元格一切正常,但是有一个大问题 - 如果我像这样调用从 tableView 中删除任何单元格

tableView.deleteRowsAtIndexPaths([tableView.indexPathForCell(activeCell)!], withRowAnimation: .None)

tableView 然后删除该单元格,并且当前可见的所有其他单元格(不会发生在屏幕边界上方或下方的单元格)移动到 X:0 而不是停留在 X:-100,所以我假设 deleteRowsAtIndexPaths 调用了一些将可见单元格位置重置为 0,0 的函数。我目前正在使用 layoutSubviews() 设置滑动单元格位置,因为按钮的数量是动态的并且无法预先确定,但 layoutSubviews 不是发生错误的函数。

所以总结一下问题 - deleteRowsAtIndexPaths 在删除重置/重绘可见单元格的单元格后调用什么函数?

最佳答案

deleteRowsAtIndexPaths 从 tableView 中删除一行。这是由 iOS 内部处理的。来自 Apple documentation :

Deletes the rows specified by an array of index paths, with an option to animate the deletion.

这里要注意的另一个有趣的事情是,此方法不会修改您的模型(保存表格 View 单元格使用的数据以在其自身上呈现的对象)。你必须自己做。单元格已删除,但如果您调用 reloadData 而不从模型中删除行,单元格将重新出现。

关于ios - deleteRowsAtIndexPaths 重置自定义单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32698010/

相关文章:

ios - 为什么 UITableViewCell 初始化在 initWithCoder 中不起作用

swift - 如何使用进度条显示 cocoa 中 NSTask 的 `git clone` 进度

ios - 自定义 UITableViewCell 中的 EXC_BAD_ACCESS

ios - 当圆形蒙版应用于 ImageView 时,UIImageView 中的图像不显示在 UITableView 中,除非滚动

ios - 如何删除整个 NSAttributedString block

ios - UIAppearance 代理规则何时应用于新的 View Controller ?

ios - 将图像上传到 S3

ios - Realm 返回具有空 RLMArray 作为属性的对象

ios - NotificationCenter 在 iOS Swift 3 的 didSelectRowAt 中不起作用

ios - TableView崩溃了,为什么它还是这样竖着呢?