- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个在表格中显示音乐记录的应用程序。该表每天分为一个部分。
代码按预期工作,但一旦删除了一个项目,一些行就会呈现为白色。然而,那些白行仍然可以被删除,但不响应didSelectRowAt
。
我创建了一个 UITableViewController
子类并实现了协议(protocol) UITableViewDataSource
和 UITableViewDelegate
。
appData
是一种结构,它符合 Codable
协议(protocol),并在应用循环通过其状态时进行编码和解码。
appData.scannedAlbums
是 String: [ScannedAlbum]
的字典(即 "2018-02-21": [ album1, album2, album3 ... ])
在我重构代码以使用部分之前, View Controller 在呈现单元格时没有问题,即使在删除项目之后也是如此。
class HistoryTableViewController: UITableViewController {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
...
override func numberOfSections(in tableView: UITableView) -> Int {
guard let sections = appDelegate.appData?.scannedAlbums else { return 0 }
return sections.count
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
guard let albumsInSection = appDelegate.appData?.getAlbums(in: section) else { return 0 }
return albumsInSection.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "AlbumCell", for: indexPath) as! HistoryTableViewCell
if let album = appDelegate.appData?.getAlbum(for: indexPath) {
print("cellForRowAt \(indexPath): \(album.discogsResult?.title ?? album.barCode), \(cell.frame)")
cell.update(with: album)
}
return cell
}
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
guard let dateString = appDelegate.appData?.getDateString(for: indexPath.section) else {return}
guard let albumsInSection = appDelegate.appData?.getAlbums(in: indexPath.section) else {return}
guard let index = albumsInSection.index(of: albumsInSection[indexPath.row]) else {return}
if albumsInSection.count == 1 {
appDelegate.appData?.scannedAlbums.removeValue(forKey: dateString)
tableView.deleteSections([indexPath.section], with: .automatic)
}
else {
appDelegate.appData?.scannedAlbums[dateString]?.remove(at: index)
tableView.deleteRows(at: [indexPath], with: .automatic)
}
}
}
排除if let
View 层次结构中没有单元格
最佳答案
我发现有些东西有点用,但我不知道为什么我必须这样写..
在重写代码以将字典作为 appData.scannedAlbums
并将所有辅助方法移至 appData 本身后, TableView 在删除后仍然存在此视觉错误。
但是,将我的字典的更新添加到 DispatchQueue.main.async 队列后修复了它,除了删除动画似乎很奇怪。
DispatchQueue.main.async {
if albumsInSection.count == 1 {
self.appDelegate.appData?.scannedAlbums.removeValue(forKey: dateString)
tableView.deleteSections([indexPath.section], with: .automatic)
}
else {
self.appDelegate.appData?.scannedAlbums[dateString]?.remove(at: index)
tableView.deleteRows(at: [indexPath], with: .automatic)
}
}
所以我猜这一定是多线程的问题?由于 UI 更新在主线程上,但更新我的 scannedAlbums
字典不是吗?
很想在这里获得一些见解,因为我想正确解决这个问题..:/
关于ios - tableView.deleteRows 后缺少随机 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51388737/
我将我的语句声明为 result.concur_update ,但是如果我尝试使用 deleterow() ,则会显示 deleterow() 错误仅适用于 resultset.concur_upda
我有这个代码: var table = document.getElementById("editTable"); var row = table.insertRow(-1); var i = row
我做了一个查询来删除 UITableView 中的指定行,但是当 deleteRows 被称为 UITableView 滚动到顶部时出现问题,那么如何防止它滚动到顶部?以及为什么滚动到顶部! 我尝试调
我正在尝试构建一个数据导入工具,它接受来自用户的 EXCEL 文件并解析文件中的数据以将数据导入我的应用程序。 我在使用 DeleteRow 时遇到了一个奇怪的问题,我似乎无法在网上找到任何信息,尽管
h3110 3v3ry0n3,尤其是 EPPlus 团队! 我有一个这样的 Excel 模板: _______________________________ | Title 1 |
我已经看到了很多关于这个主题的主题,但我仍然有错误...... 这是我在 tableview 委托(delegate)方法中的代码(当用户滑动并单击单元格上的删除按钮时调用): self.tableV
我正在开发一个在表格中显示音乐记录的应用程序。该表每天分为一个部分。 代码按预期工作,但一旦删除了一个项目,一些行就会呈现为白色。然而,那些白行仍然可以被删除,但不响应didSelectRowAt。
在 API 调用成功时调用以下代码以从列表中删除项目 self?.myWishlistArry?.remove(at: indexPath.row) self?.myWishListTableView
我有以下问题: 无法使用结果集 deleteRow 函数删除表行。我的代码是这样的: con = SqlService.getConnection(DB.NIPO_GBS_HIGHWAY); S
我有一张 table 。在每一行的末尾都有一个 href“X”,它删除了这一行。这很简单。现在,当您点击任何第 2 行的“X”时,它会删除第 2 行,但是当您点击第 3 行时,它会删除第 4 行。 这
我正在开发的应用程序出现不稳定的问题。我有一组轨道显示在表格 View 中。在此 TableView 中,用户可以向左滑动单个轨道,然后会出现一个包含三个项目的菜单。其中之一是删除操作。这是这个 Ac
我需要删除200-300行(不包括第1行)。下面的脚本出现了超出范围的错误,并且运行缓慢。有人可以帮助您加快流程吗? **如果可能排除ROW_1 function clearRange() { v
在 deleteRows(at:with:) 从我的 TableView 中删除任何行后,我无法通过 becomeFirstResponder() 获取可重用自定义单元格中的文本字段以获取焦点>(在调
当我尝试删除从 Core Data 的 NSManagedObject 派生的 Product 类型的对象时。可以成功移除该对象。但它在 tableView.deleteRows(at:with:)
我有以下 PHP 代码来生成一个表,其中的行的列具有以下属性:“id”、“lastname”和“firstname”。我想为删除相应行的每一行添加一个按钮,并让此行尝试这样做:echo '';在下面的
我有一个带有表的组件,该表加载了 REST API 发送的数据,我的问题最重要的是,是否可以通过进入 DOM 的remove()或deleteRow(index)删除一行或我必须通过状态(useSta
尝试从表格 View 中删除单元格时如何解决此崩溃问题? 调试器显示该行上的错误:tableView.deleteRows(at: [selectedIndexPath], with: .automa
应用程序部分删除了文件,但也因错误消息而崩溃 声明部分 var FileContent = (try? FileManager.default.contentsOfDirectory(atPath :
我正在尝试删除一行但它不允许我,它说“'deleteRow' 不允许,因为 ResultSet 不是可更新的 ResultSet”。这是我的代码: public void addUserName()
我是一名优秀的程序员,十分优秀!