我正在寻找一种方法来滚动到UITableView中的选定单元格,即使底部有空单元格也是如此。我的问题是,当表视图底部没有单元格时,滚动事件不会滚动。
作为一种解决方法,我最终在底部创建了空单元格并删除了这些单元格,但我不认为这是一个很好的解决方案。那么这样做的方式是怎样的呢?
我的代码如下所示:
func scrollToSelectedCell(indexPath: IndexPath) {
self.tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.top, animated: true)
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
if (cell as? DropDownCell) != nil {
self.performSegue(withIdentifier: "showDropDownSelector", sender: cell)
} else if (cell as? PickerCell) != nil {
self.performSegue(withIdentifier: "showPickerSelector", sender: cell)
} else if let tmp_cell = cell as? TextFieldCell {
scrollToSelectedCell(indexPath: indexPath)
tmp_cell.textField.becomeFirstResponder()
}
}
答案 0 :(得分:1)
使用UITableView继承自UIScrollView的事实,您可以更优雅地完成此操作。这允许您使用为tableView设置内容插入然后更改内容偏移的组合。
使用contentInset属性在单元格下方的表格视图中添加边距:
tableView.contentInset = UIEdgeInsetMake(top: 0, left: 0, bottom: A LARGE NUMBER, right: 0)
然后使用contentOffset设置您希望内容的初始位置在滚动视图中的位置:
tableView.contentOffset = CGPoint(x: 0, y: SOME OTHER LARGE NUMBER TO POSITION CENTRALLY IN THE MARGIN)
您可以通过以下网址获取更多信息:https://developer.apple.com/reference/uikit/uiscrollview
希望有所帮助。