我正在以编程方式在Swift 4中使用UITableView
构建聊天应用程序。此表视图具有动态单元格高度。所以当我向表视图插入一个新行并调用
self.m_ChatTable.scrollToRow(at: lastIndex, at: .top, animated: true)
无法正常工作。例如,当我向表视图插入两个新行时,插入第二行后第一行变为可见,插入第三行后第二行变为可见。 tableView中的滚动高度不正确。
代码
override func viewDidLoad() {
super.viewDidLoad()
m_ChatTable.rowHeight = UITableViewAutomaticDimension
m_ChatTable.separatorStyle = .none
m_ChatTable.delegate = self
m_ChatTable.dataSource = self
m_MainScrollView.addSubview(m_ChatTable)
m_ChatTable.reloadData()
// Do any additional setup after loading the view.
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
let msg:Message = m_MessageList[indexPath.row] as Message
return msg.height + 10
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
{
return 50 // for example
}
func numberOfSections(in tableView: UITableView) -> Int
{
return 1
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
let msg = m_MessageList[indexPath.row]
if (0 != msg.height)
{
return msg.height + 10
}
else
{
return UITableViewAutomaticDimension
}
}
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let height = cell.frame.height
m_MessageList[indexPath.row].height = height
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.m_MessageList.count
}