捕获子视图控制器的滚动

时间:2014-01-16 05:20:40

标签: uiscrollview uiscrollviewdelegate

我有UIViewController - WSProfileViewController。此VC有一个headerView,然后是一个containerView,它会将tableViewController中的一个加载为childViewController WSProfileViewController。我希望能够在当前headerView向上滚动时向上滚动tableView,就好像它是headerView本身的tableView一样。

在主VC [{1}}中,我将其设为WSProfileViewController并实施了UIScrollViewDelegate,但它从未被调用过。它目前与子scrollViewDidScroll的{​​{1}}无关。

*每个子scrollViews都有不同的数据模型,并且是其他地方使用的类,因此我希望将它们保持原样并将它们作为子项加载。

2 个答案:

答案 0 :(得分:1)

所以我不想改变child view controllers的任何代码,但我很确定父母没有任何方法可以直接捕获子滚动,除非我将其设为{{1} } delegate,但我不能这样做,因为每个child tableviews都需要是他们自己的tableview的委托。

如果我遗失了某些东西,请纠正我。

我所做的是发送每个孩子的child view controller方法的通知,如下:

scrollViewDidScroll

然后在父母身上观察:

#pragma mark - UIScrollView Delegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    NSDictionary *scrollViewInfo = [NSDictionary dictionaryWithObject:scrollView  forKey:@"someKey"];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"someNotificationName" object:nil userInfo:scrollViewInfo];

}

它在设备上滚动标题视图没有滞后,所以至少目前我很满意。

答案 1 :(得分:0)

您可以使用KVO监视子scrollView的contentOffset的更改。查看此文章以了解有关KVO的更多信息:http://nshipster.com/key-value-observing/