我有2个ViewControllers,每个都包含一个scrollview(显示几个图表)和一个tableview。 我想根据滚动视图中显示的当前图表更新tableview内容。
scrollview由一个单独的类“GraphScrollView”管理,其中属性currentIndex存储显示的当前图形。
问题是我不知道如何通知viewController更改了currentIndex,以便它可以发送reloadData方法来更新tableview。 我想在GraphScrollView类中发布一个通知,并在2个viewControllers中添加一个Observer,但在这种情况下,2个ViewControllers会被通知,而我只想通知viewController当前活动视图(因为这两个VC应该是独立,也因为2个viewControllers可能有不同数量的图形,因此currentIndex可能是两个VC之一的错误值。
谢谢, 科拉多
答案 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];
}
}
...