自动滚动到 UITableView 底部
Posted
技术标签:
【中文标题】自动滚动到 UITableView 底部【英文标题】:Auto scroll to bottom of UITableView 【发布时间】:2018-05-07 13:10:54 【问题描述】:如何在页面打开后自动滚动到 UIViewController 的底部?
目前,当我打开页面时,它一直滚动到顶部。但我需要它在底部,因为这是最新消息所在的位置
这是表格视图的快捷方式:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return self.dataArr.count
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "messages") as! UITableViewCell
cell.selectionStyle = .none
let message = cell.viewWithTag(100) as! UILabel
let name = cell.viewWithTag(101) as! UILabel
let data = self.dataArr[indexPath.row] as! [String:AnyObject]
message.text = " " + String(describing: data["message"]!) + " "
name.text = String(describing: data["name"]!)
return cell
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
var mapStr = ""
let data = self.dataArr[indexPath.row] as! [String:AnyObject]
let message = String(describing: data["message"]!)
let array = message.components(separatedBy: "\n") as! [String]
let arrayLoc = message.components(separatedBy: "Location: ") as! [String]
if arrayLoc.count > 0
mapStr = arrayLoc[1]
print(mapStr)
if mapStr.count > 0
self.open(scheme: mapStr)
【问题讨论】:
可能与https://***.com/questions/29378009/how-do-i-automatically-scroll-in-a-table-view-swift?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa重复 How do i automatically scroll in a table view? (Swift)的可能重复 我看过这个解决方案,但它似乎对我不起作用:(它会抛出错误 【参考方案1】:let indexPath = IndexPath(item: noOfRows, section: 0)
yourTableView.scrollToRow(at: indexPath, at: UITableView.ScrollPosition.bottom, animated: true)
【讨论】:
如果您希望表格视图在视图出现时滚动,然后将其添加到 viewwillappear 方法,但记住每次都会调用 viewwillappear,其他选项在 viewdidload 方法中。 @OliverFerris 好吧,如果你有数据,那么你可以把这个viewDidApear
.
我明白了!但是现在当我尝试传入 noOfRows 时,我得到一个未解析的标识符:(
它是 noOfRows - 1
@OliverFerris 用 noOfRows 替换您的 tableview 数组计数。【参考方案2】:
这在 Swift 4 中对我有用
我重写了 UITableViewController 类的 viewDidAppear 函数。
override func viewDidAppear(_ animated: Bool)
let scrollPoint = CGPoint(x: 0, y: self.tableView.contentSize.height - self.tableView.frame.size.height)
self.tableView.setContentOffset(scrollPoint, animated: false)
感谢这篇文章 Scroll all the way down to the bottom of UITableView 的答案,注意问题不太一样,他们向下滚动 reloadData 而不是屏幕出现。
【讨论】:
以上是关于自动滚动到 UITableView 底部的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法自动滚动到 UICollectionView 的底部