TabBar控制器中视图控制器垂直滚动同步需点击标签才生效的问题求助
TabBar控制器中视图控制器垂直滚动同步需点击标签才生效的问题求助
各位iOS开发的朋友们,我最近在做TabBar控制器下多个视图控制器的垂直滚动同步功能,目前的实现思路是在滚动触发时发送通知来同步contentOffset,具体代码如下:
首先是在滚动的视图控制器里,在scrollViewDidScroll方法中发送通知:
func scrollViewDidScroll(_ scrollView: UIScrollView) { NotificationCenter.default.post(name: name, object: self, userInfo: ["offset": scrollView.contentOffset]) }
然后在每个需要同步的视图控制器的viewDidLoad里添加通知观察者:
NotificationCenter.default.addObserver(forName: name, object: nil, queue: .main) { notification in let offset = notification.userInfo!["offset"]! as! CGPoint if let sender = notification.object as? SyncedViewController, sender != self { self.collectionView.contentOffset = offset } }
功能本身是正常的,但有个很头疼的问题:必须先点击每一个标签页,同步功能才会生效,如果不点击对应的标签,那个页面的滚动同步就完全不管用。
我试过通过_ = vc.view这种方式强制触发目标视图控制器的viewDidLoad,但并没有解决问题,想问问大家有没有遇到过类似的情况,或者有什么办法能让同步在不需要点击标签的情况下就生效?
备注:内容来源于stack exchange,提问作者Godfather
相关产品推荐
相关产品推荐

