gpt4 book ai didi

uitableview - 带有 UITableView 的 scrollToRowAtIndexPath 不起作用

转载 作者:IT王子 更新时间:2023-10-29 05:10:26 25 4
gpt4 key购买 nike

我在 iOS8 中有一个这样的表格 View :

tableView = UITableView(frame: view.bounds, style: .Plain)
view.addSubview(tableView)

当用户在键盘上键入和发送一些文本时,应用程序调用以下方法来滚动 tableView。目标是在屏幕上查看新文本(如聊天)

let numberOfRows = tableView.numberOfRowsInSection(0)
if numberOfRows > 0 {
let indexPath = NSIndexPath(forRow: numberOfRows-1, inSection: 0)
tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Bottom, animated: animated)
}

但是 TableView 不会滚动到 bootom。

有人有解决方案吗?

谢谢。

解释:

类的定义:

class ChatViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextViewDelegate 

然后我有了 TableView 的定义:

var tableView: UITableView! 

在 viewDidLoad 中:

tableView = UITableView(frame: view.bounds, style: .Plain) 
tableView.dataSource = self
tableView.delegate = self
view.addSubview(tableView)

然后我调用了应该进行滚动的代码(我的答案中的第二个代码块)。当我启动应用程序时,我希望 tableview 向下滚动,但它不起作用。

最佳答案

下面的解决方案对我有用。它是在 StackOverflow 上找到的解决方案的组合。在很短的延迟后,我调用了“scrollToRowAtIndexPath”。

func tableViewScrollToBottom(animated: Bool) {

let delay = 0.1 * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

dispatch_after(time, dispatch_get_main_queue(), {

let numberOfSections = self.tableView.numberOfSections()
let numberOfRows = self.tableView.numberOfRowsInSection(numberOfSections-1)

if numberOfRows > 0 {
let indexPath = NSIndexPath(forRow: numberOfRows-1, inSection: (numberOfSections-1))
self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Bottom, animated: animated)
}

})
}

调用者:

tableViewScrollToBottom(true)

swift 3

func tableViewScrollToBottom(animated: Bool) {
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) {
let numberOfSections = self.tableView.numberOfSections
let numberOfRows = self.tableView.numberOfRows(inSection: numberOfSections-1)

if numberOfRows > 0 {
let indexPath = IndexPath(row: numberOfRows-1, section: (numberOfSections-1))
self.tableView.scrollToRow(at: indexPath, at: .bottom, animated: animated)
}
}
}

关于uitableview - 带有 UITableView 的 scrollToRowAtIndexPath 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com