当 UIScrollView 内容改变时更新 UITableView
Posted
技术标签:
【中文标题】当 UIScrollView 内容改变时更新 UITableView【英文标题】:Update UITableView when UIScrollView content changes 【发布时间】:2014-09-20 13:37:20 【问题描述】:我有 2 个 ViewController,每个都包含一个滚动视图(显示多个图表)和一个表格视图。 我想根据滚动视图中显示的当前图形更新表格视图内容。
滚动视图由一个单独的类“GraphScrollView”管理,其中 currentIndex 属性存储当前显示的图形。
问题是我不知道如何通知viewController currentIndex 发生了变化,以便它可以发送reloadData 方法来更新tableview。 我正在考虑在 GraphScrollView 类中发布通知并在 2 个 viewControllers 中添加一个观察者,但在这种情况下,两个 ViewControllers 都会被通知,而我只想通知当前活动视图的 viewController(因为两个 VC 应该是独立,还因为 2 个 viewController 可能有不同数量的图,因此 currentIndex 可能是两个 VC 之一的错误值。
谢谢, 科拉多
【问题讨论】:
【参考方案1】:我假设您可以在“活动视图”更改时将视图控制器设置为观察者并删除。
您也可以创建一个委托协议并切换哪个视图控制器是委托,但我实际上发现这比通知更工作,没有特别的收获。
【讨论】:
【参考方案2】:您的问题不清楚如何在滚动视图中更改currentIndex
。但是您始终可以在视图控制器中实现 UIScrollViewDelegate 以在滚动结束时获取更新:
...
@implementation ViewController
...
- (void)viewDidLoad
...
self.graphScrollView.delegate = self;
...
...
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
if (self.graphScrollView.currentIndex == ???)
[self.tableView reloadData];
...
【讨论】:
以上是关于当 UIScrollView 内容改变时更新 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 uiscrollview 滚动 uiwebview