自动滚动到滚动视图中的子视图

时间:2012-12-07 20:37:48

标签: ios uiscrollview

我已经实现了一个包含动态内容的滚动视图:多个子视图显示玩家名称下的玩家的照片。流程是: 1.在主窗口中,选择一个播放器。 2.用户启动另一个视图以添加新玩家。 3.当用户返回主菜单时,滚动视图将完全刷新,以便显示新的播放器照片和名称。

此时,滚动视图仍然应该让之前选择的玩家处于焦点状态,而是从头开始显示它。 所以问题是:是否有一种方法可以自动滚动到滚动视图中的特定位置,以便屏幕仍然可以选择所选的播放器?

2 个答案:

答案 0 :(得分:1)

简单,创建一个CGPoint和一个BOOL,您可以在视图更改后保留它们,并在最初离开该页面时设置它们。然后在viewDidAppear中,您可以检查BOOL是否为YES并使用:

[myScrollView setContentOffset:myCGPoint animated:YES];

或者,如果您希望滚动视图显示已滚动到正确的位置,请执行相同的操作,但viewWillAppear中的动画标记设置为NO除外。

答案 1 :(得分:1)

是的,有两个:

(1) scrollRectToVisible:animated:
(2) setContentOffset:animated:

您可以在UIScrollView Class Reference了解这两种方法。无论哪种方式,您都可以使用实例变量来存储内容偏移量或用户滚动时显示的可见矩形,然后使用上面列出的方法之一恢复播放器数据更新时的滚动视图位置。

根据您正在做的事情,您可能会发现UITableView更容易实现,因为它是非常可定制的“开箱即用”,它有很多方法可以帮助管理列表(包括我上面提到的那些,和更多)。如果您有兴趣,请查看UITableView Class Reference