所以我有一个UITableview
,其中包含3个不同的标签设置。
我想将表格滚动到特定项目。
如果用户添加了一个新项目,则表格一直滚动到底部,因为这是项目的添加位置。
如果用户选择其中一个项目并对其进行编辑,它应该返回到桌面上的相同位置。不滚动到顶部或底部。
这就是我所拥有的:
这是一个类变量
NSIndexpath lastScrollY;
在ViewWillDisappear
中:
lastScrollY = this.tableView.IndexPathForSelectedRow() ;
在ViewWillAppear
中:
if(lastScrollY != null) {
this.tableView.ScrollToRow(lastScrollY, UITableViewScrollPosition.None, true);
}
这似乎不起作用。 这仅适用于用户选择已保存项目的情况。 然后在表格中添加新项目/行时怎么办?
请详细解释,因为我是新手。
感谢您的时间!
答案 0 :(得分:0)
在向tableView添加新单元格之后,使用与之前相同的方法,但更改滚动位置(此代码位于Objective-C中,但与您的相同。我会尝试如果你需要,可以帮助翻译:
[tableView scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionBottom
animated:true];
您可能还想在方法的覆盖中设置lastScrollY
(void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
使用自动传入的值indexPath保存到lastScrollY。
最后,我不确定这是否会有所帮助,但在您当前的scrollToRow调用中,您已将其滚动到" none",请尝试将其滚动到UITableViewScrollPositionTop。如果仍然无法正常工作,请尝试在viewWillAppear方法的末尾调用[tableView reloadData],这可能与您的语言中的tableView.reloadData()类似。
希望这有帮助!