我有UIViewController
- WSProfileViewController
。此VC有一个headerView
,然后是一个containerView
,它会将tableViewController
中的一个加载为childViewController
WSProfileViewController
。我希望能够在当前headerView
向上滚动时向上滚动tableView
,就好像它是headerView
本身的tableView
一样。
在主VC [{1}}中,我将其设为WSProfileViewController
并实施了UIScrollViewDelegate
,但它从未被调用过。它目前与子scrollViewDidScroll
的{{1}}无关。
*每个子scrollViews
都有不同的数据模型,并且是其他地方使用的类,因此我希望将它们保持原样并将它们作为子项加载。
答案 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/