如何解决UITableView.ScrollRectToVisible不会滚动到底部
|| 我有一个表视图,其中包含可变数量的节和自定义单元格。在某些情况下,单元格可能会在RowSelected()中调整大小。每当发生这种情况时,我还要确保在调整大小(放大)后该单元格是完全可见的。 我在另一个只修改基础数据的表中工作,以便表视图源将提供更大的单元格。然后,我重新加载该单元格并将其滚动可见,如下所示:// Modify data
//...
// Reload cell
tableView.ReloadRows(new NSIndexPath[] { indexPath },UITableViewRowAnimation.None);
tableView.ScrollRectToVisible(tableView.CellAt(indexPath).Frame,true);
问题出现在表视图中,在该视图中,大小调整不仅可以由RowSelected()触发,而且还可以由单元内UI元素上的事件触发。
然后,事件会调用一种方法来重新加载单元格:
void updateCell() {
if (cell.Superview != null) {
UITableView tableView = (UITableView)cell.Superview;
tableView.ReloadRows(new NSIndexPath[] { indexPath },UITableViewRowAnimation.None);
// Get the new (possibly enlarged) frame
RectangleF frame = tableView.CellAt(indexPath).Frame;
Console.WriteLine(\"This really is the new large frame,height: {0}\",frame.Height);
// Try to scroll it visible
tableView.ScrollRectToVisible(frame,true);
}
}
除了最底下的所有单元格,此滚动条都可以正常滚动。它仅使该单元格的旧框架可见。我仔细检查了它是否确实为ScrollRectToVisible()提供了新的单元格框架。
因此,即使重新加载行之后,似乎ScrollRectToVisible()也已绑定到表的旧内容大小。我试图通过提供新的内容大小以及计算出的高度差来解决此问题。那确实可行,但对我来说真的很客气。
有没有更清洁的做事方法?
提前致谢
解决方法
代替使用这个:
tableView.ScrollRectToVisible(_: animated: )
使用它可以将UITableView滚动到底行:
tableView.scrollToRow(at: at: animated: )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。