我在UITableView滚动方面遇到了一些问题。这是我的简单屏幕,我有UITextField和UITableView与单元格。当用户在UITextField应用程序中键入内容时,过滤项目列表并重新加载UITableView。它正在按预期工作。
在右侧屏幕上,您可以看到滚动时UITableView的外观。单元格位于UITextField下。
假设我滚动了一些单元格,如果我开始在UITextField中输入内容,我会得到过滤单元格的列表,但其中一些在UITextField下,我无法向下滚动。
答案 0 :(得分:1)
默认情况下,当您使用新的行数据集重新加载表时,表的滚动偏移量不会发生变化。重新加载表格后需要滚动到顶部:
self.tableView.scrollToRow(at: IndexPath(row: 0, section: 0),
at: .top,
animated: true)
如果您没有默认的占位符单元格来代表"没有匹配结果"如果没有结果,因此没有单元格代表索引(0,0),那么在上述代码之前添加以下条件以保护崩溃:
guard cellResults.count > 0 else { return }
答案 1 :(得分:0)
首先,你的UITextField包含在tableview标题视图中? UITableView需要滚动表还是不滚动? 如果你需要在用户在UITextField中输入内容时总是显示第一个单元格,我推荐使用RxSwift这样的
textField
.rx.text
.orEmpty
.debounce(0.1, scheduler: MainScheduler.instance)
.distinctUntilChanged()
.subscribe(onNext: { [unowned self] query in
//TODO: Do something with you table, for example
// self.tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
// or update tableView.
})
.disposed(by: disposeBag)