【问题标题】:iOS, Swift Segmented Control, Container View - How to avoid loading both container viewsiOS, Swift Segmented Control, Container View - 如何避免同时加载两个容器视图
【发布时间】:2025-11-27 19:55:01
【问题描述】:

我有一个分段控件和两个容器视图。当主视图被加载时,这两个容器视图也会被加载。有没有办法只加载选定的视图。请看附图。当主视图加载时,第一个和第二个容器视图都被加载。我不希望加载这两个视图,因为在这些容器视图中,我想在选择段时从 API 获取数据。在这些容器视图中的每一个中,都将添加下拉刷新以从 API 获取数据,并显示最新数据,因为它可能会在用户从一个段转到另一个段时发生变化。有可能吗?

【问题讨论】:

    标签: ios swift uisegmentedcontrol uicontainerview


    【解决方案1】:

    您可以,但另一种方法是在切换分段控件和要加载 api 材料的视图控制器时发布通知,您放置一个观察者,这意味着当您切换分段控件时。您触发具有api检索功能的viewcontroller中的功能

    • 在容器视图的 viewcontroller 的 viewdidload 中添加这个

    NotificationCenter.default.addObserver( 自己, 选择器:#selector(显示), 名称:NSNotification.Name(原始值:“显示”), 对象:无 )

    • 现在每次您发布通知时,此功能都会运行

      @objc 函数显示() { //函数将在这里运行 }

    • 在分段控制中切换时,只需发布​​通知,shows() 就会运行

      NotificationCenter.default.post(name: Notification.Name("shows"),object: nil)

    【讨论】:

    • 抱歉,不清楚。如果您不介意,那么您可以快速发布代码吗?我仍然不确定在添加观察者后我们将如何停止默认同时加载两个视图?
    • 如何从 api 中获取数据,是否使用 viewdidappear 或 viewididload 获取数据(除了下拉),
    • 我正在从 API 获取数据并在所有视图控制器的 videDidLoad 中解码 JSON。
    • 那么如果你把获取代码放在shows函数中,它只会在你切换时触发,你仍然会加载两个视图控制器,但你只会在切换时加载数据
    最近更新 更多