滚动UITable到特定的表项

时间:2014-08-07 03:14:04

标签: ios uitableview xamarin.ios xamarin nsindexpath

所以我有一个UITableview,其中包含3个不同的标签设置。

我想将表格滚动到特定项目。

如果用户添加了一个新项目,则表格一直滚动到底部,因为这是项目的添加位置。

如果用户选择其中一个项目并对其进行编辑,它应该返回到桌面上的相同位置。不滚动到顶部或底部。

这就是我所拥有的:

这是一个类变量 NSIndexpath lastScrollY;

ViewWillDisappear中: lastScrollY = this.tableView.IndexPathForSelectedRow() ;

ViewWillAppear中: if(lastScrollY != null) {
    this.tableView.ScrollToRow(lastScrollY, UITableViewScrollPosition.None, true); }

这似乎不起作用。 这仅适用于用户选择已保存项目的情况。 然后在表格中添加新项目/行时怎么办?

请详细解释,因为我是新手。

感谢您的时间!

1 个答案:

答案 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()类似。

希望这有帮助!