当UIScrollView内容更改时更新UITableView

时间:2014-09-20 13:37:20

标签: ios objective-c uitableview uiviewcontroller uiscrollview

我有2个ViewControllers,每个都包含一个scrollview(显示几个图表)和一个tableview。 我想根据滚动视图中显示的当前图表更新tableview内容。

scrollview由一个单独的类“GraphScrollView”管理,其中属性currentIndex存储显示的当前图形。

问题是我不知道如何通知viewController更改了currentIndex,以便它可以发送reloadData方法来更新tableview。 我想在GraphScrollView类中发布一个通知,并在2个viewControllers中添加一个Observer,但在这种情况下,2个ViewControllers会被通知,而我只想通知viewController当前活动视图(因为这两个VC应该是独立,也因为2个viewControllers可能有不同数量的图形,因此currentIndex可能是两个VC之一的错误值。

谢谢, 科拉多

2 个答案:

答案 0 :(得分:0)

我假设您可以在"活动视图"中设置和删除视图控制器作为观察者。变化。

您还可以创建一个委托协议并切换哪个视图控制器是委托,但实际上我发现这比通知更多的工作没有特别的好处。

答案 1 :(得分:0)

从您的问题中不清楚如何在滚动视图中更改currentIndex。但是你总是可以在视图控制器中实现UIScrollViewDelegate,以便在滚动结束时获得更新:

...
@implementation ViewController 
...
- (void)viewDidLoad {
   ...
   self.graphScrollView.delegate = self;
   ... 

}

...
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
   if (self.graphScrollView.currentIndex == ???) {
       [self.tableView reloadData];
   }
}
...