UITableView从当前位置滚动到底部

时间:2017-07-20 05:05:03

标签: ios swift uitableview swift3

如何从当前位置滚动到tableview的最后一行,因为我尝试过这个解决方案:

self.tableView.scrollToRow(at: lastIndex.last!, at: .bottom , animated: false)


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)
        }

并且它不会从当前位置滚动,而是从最顶部位置滚动。即使我当前的位置是最后一行

4 个答案:

答案 0 :(得分:4)

待办事项

func scrollToLastRow() {
  let indexPath = NSIndexPath(forRow: objects.count - 1, inSection: 0)
  self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Bottom, animated: true)
}

滚动意味着,即当前位置。所以这段代码应该可行。

否则,您可以使用scrollRectToVisible

指定要滚动的帧
tableView.scrollRectToVisible(tableView.rectForRowAtIndexPath(indexPath),animated: true) 

答案 1 :(得分:0)

试试这段代码,

this.get('model').pushObjects(...)

答案 2 :(得分:0)

当您要将tableview滚动到最后一个索引时,您必须提供更多信息,因为此代码可以正常运行

let indexPath = IndexPath.init(row: lastRow, section: 0)
customTableView.scrollToRow(at: indexPath, at: .bottom, animated: true)

更新了

最后,这是我的工作代码

  @IBAction func sendBtnPressed(_ sender: UIButton) {
    self.listMessages.append(messageTextView.text)
    let lastIndexPath = IndexPath.init(row: self.listMessages.count-1, section: 0)
    self.tableView.insertRows(at: [lastIndexPath], with: .none)
    self.tableView.scrollToRow(at: lastIndexPath, at: .bottom, animated: true)
    messageTextView.text = "";
    }

答案 3 :(得分:0)

快速4

func scrollToLastRow() {

    if CommentNameArray.count != 0 {
        let indexPath = NSIndexPath(row: CommentNameArray.count - 1, section: 0)
        self.CommentTableView.scrollToRow(at: indexPath as IndexPath, at: .bottom, animated: true)
    }

}