我想在加载完成后更改表的偏移量,并且该偏移量取决于表上加载的单元格数.
是否可以通过SDK知道uitableview加载何时完成?我在委托和数据源协议上都没有看到任何内容.
我不能使用数据源的计数,因为只加载可见单元格.
我有一个UITableView与cells被动态地更新.一切正常,除了tableview.reload调用时(见下文)刷新cells表中我希望表滚动到底部以显示新条目.
- (void)reloadTable:(NSNotification *)notification {
NSLog(@"RELOAD TABLE ...");
[customTableView reloadData];
// Scroll to bottom of UITable here ....
}
Run Code Online (Sandbox Code Playgroud)
我打算使用scrollToRowAtIndexPath:atScrollPosition:animated:但后来注意到我无法访问indexPath.
有谁知道怎么做,或者delegate我可以使用的回调?
我遇到的问题UITableView是它在使用时似乎无法正确滚动到最后一行scrollToRowAtIndexPath:atScrollPosition:animated
这是我用来导致滚动的代码:
[self.tableView scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionMiddle
animated:YES];
Run Code Online (Sandbox Code Playgroud)
这是一个截图,显示结果(和问题!):

如您所见,最后一行(九月)未完全滚动到视图中; 底部几个像素被切断.
我尝试过使用UITableViewScrollPositionNone,UITableViewScrollPositionTop并且UITableViewScrollPositionBottom作为滚动位置,但它们都产生相同的结果.
我的单元格的自定义单元格高度61.0f当前在故事板中设置,但添加UITableViewDelegate方法tableView:heightForRowAtIndexPath:并返回相同的值也无济于事.
有什么办法,我可以得到表视图滚动到最后一排和拥有它完全可见?
编辑:
为了清楚起见,我正在使用UINavigationController股票UITableViewController作为根视图控制器.
编辑2:
如果我rectForRowAtIndexPath:用来确定行的rect,它实际上会返回该行的正确rect.但是如果我然后scrollRectToVisible:animated:使用那个rect 调用,我会得到与上面相同的结果; 底部几个像素被切断.
带有表格的视图会被推到屏幕上,我希望它在屏幕实际显示之前滚动到表格中的某一行.我在最终的viewcontroller中使用这段代码.
NSIndexPath *scrollToPath = [NSIndexPath indexPathForRow:5 inSection:0];
[theTable scrollToRowAtIndexPath:scrollToPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
Run Code Online (Sandbox Code Playgroud)
当我把它放在viewDiDAppear方法中时,它会从表格的初始位置(在顶部)短暂闪烁到我想要的行.我不希望它显示初始位置.如果我将它放在viewDidLoad或viewWillAppear中,那么它会因NSRangeException崩溃,可能是因为该表尚未设置.
如何在不显示初始位置的情况下滚动它?
我正在我的表视图中重新加载一些单元格.重新加载完成后,我想滚动以便它们可见.我知道scrollToRowAtIndexPath:atScrollPosition:方法.但是我需要在重新加载完成后调用它,因为重载将改变行高.
以下是一些相关问题,但它们并没有完全回答我的问题.
UITableView,重新加载时滚动到底部?
如何在最后一个单元格上启动UITableView
编辑 - 我的重新加载不插入或删除任何行.相反,我正在重新加载一个或多个单元格以反映更新的信息.