我正在使用 iPhone SDK 3.1.3。我有一个
表视图已出现,我滚动到最后一行。如果我选择了最后一行,我将使用更多数据重新加载表格视图。表格用更多数据进行了更新。除了滚动位置始终在顶部之外,一切正常。
我需要滚动位置是我单击以加载更多数据的最后一行。我保存滚动位置并在加载更多数据后调用以下代码。它可以执行,但滚动位置始终在顶部。
UITableViewController
从另一个控制器获取数据。表视图被添加为主视图的子视图,但其框架设置为不可见。通过点击按钮,更新表视图框架并使其滑动到主视图上方。表视图已出现,我滚动到最后一行。如果我选择了最后一行,我将使用更多数据重新加载表格视图。表格用更多数据进行了更新。除了滚动位置始终在顶部之外,一切正常。
我需要滚动位置是我单击以加载更多数据的最后一行。我保存滚动位置并在加载更多数据后调用以下代码。它可以执行,但滚动位置始终在顶部。
[theTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:savedScrollPosition inSection:0] atScrollPosition:savedScrollPosition animated:NO];
以上似乎没有效果。 ViewWillAppear:
ViewDidAppear:
不会触发,并且我被告知,如果视图控制器是在代码中实例化的,这种情况就不会触发。请帮助我弄清楚如何在重新加载表格后([theTableView reloadData]
),在所点击的行处设置滚动位置的时间和方式。
重新加载表格视图和滚动的代码
////performAction will notify the tableviewcontroller which will result in didPerformAction being called
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == lastRow)
{
savedScrollPosition = lastRow;
//perform the action
[controller performAction];
}
}
- (void) didPerformAction:(NSNotification *)obj
{
[theTableView reloadData];
[theTableView
scrollToRowAtIndexPath: [NSIndexPath indexPathForRow:savedScrollPosition inSection:0]
atScrollPosition:UITableViewScrollPositionBottom
animated:NO];
}