如何在多个屏幕中将单个 SwiftUI 视图重用为单个实例?

问题描述 投票:0回答:1

在 iOS SwiftUI 中实例化单个 SwiftUI 视图非常简单。

如何使这个单个 SwiftUI 视图实例及其渲染的内容可用于其他屏幕,以便在不同的上下文/视图中显示相同的视图实例?

举个例子:

    import SwiftUI
@_spi(Experimental) import MapboxMaps

struct ContentView: View {
    var body: some View {
        Map()
          .ignoresSafeArea()
    }
}

上视图可能是 SwiftUI 列表的一部分。我想在后续子视图或非子视图中重复使用相同的视图,例如GridView 或任何其他 SwiftUI 视图。

实例化 SwiftUI 视图 ContentView() 后,只要存在单个实例(单例),如何在同一应用程序中、在不同的上下文(例如替代大小限制)中重复使用该视图?

目的是根据单例模式显示 2 个或更多单个视图 ContentView() 实例,而不重新实例化备用视图 ContentView()。

SwiftUI 默认情况下支持将实例化视图与各种不同的数据模型重用。然而,如何重复使用完全相同的一个实例,包括。它的数据模型和其他设置视图参数在另一个屏幕中,而无需重新加载或重新渲染后续视图元素?从而确保绩效目标。

仍支持将视图参数传递给 ContentView() 单例。

感谢 iOS SwiftUI 中的提示。

ios swiftui view singleton
1个回答
-2
投票

如何分配为常量并在需要的地方使用该常量?

let myView = ContentView() // <-- Note: Although this technically works, be aware it will be a copy of ContentView() which may not be desirable, depending on the whether the view has static or dynamic content. See the comments above and below for more insight.

struct SomeOtherView: View {
    var body: some View {
        VStack {
            myView
        }
    }
}

显然,您可以在任何有意义的地方声明常量。在上面的示例中,它位于结构体外部,但它也可能位于结构体内部或某些其他全局类或单例中。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.