在 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 中的提示。
如何分配为常量并在需要的地方使用该常量?
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
}
}
}
显然,您可以在任何有意义的地方声明常量。在上面的示例中,它位于结构体外部,但它也可能位于结构体内部或某些其他全局类或单例中。