You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:13:04