我在像這樣的包中創建了一個 SwiftUI 視圖和 ObservableObject:
struct CustomView: View {
@StateObject
var viewModel: CustomViewModel
var body: some View {
Text("Test")
}
}
class CustomViewModel: ObservableObject {
var folderName: String
init(folderName: String) {
self.folderName = folderName
}
}
我在這里使用這個:
struct ContentViewInsidePackage: View {
var body: some View {
CustomView(viewModel: CustomViewModel(folderName: "Winter"))
}
}
如何在包外使用 View 和 ObservableObject?
問題是當我在包外使用此視圖時,我需要將所有內容宣告為公共,并且我需要像這里這樣的公共初始化:
public struct CustomView: View {
@StateObject
var viewModel: CustomViewModel
public init(viewModel: CustomViewModel) {
// Compile Error: Cannot assign to property: 'viewModel' is a get-only property
self.viewModel = viewModel
}
public var body: some View {
Text("Test")
}
}
public class CustomViewModel: ObservableObject {
var folderName: String
public init(folderName: String) {
self.folderName = folderName
}
}
然后我得到編譯錯誤:無法分配給屬性:'viewModel' is a get-only property
如何使用我想要注入的值來實體化 ObservableObject?
uj5u.com熱心網友回復:
嘗試這個:
public struct CustomView: View {
@StateObject
var viewModel: CustomViewModel
public init(viewModel: CustomViewModel) {
// Note the change on the below line:
self._viewModel = StateObject(wrappedValue: viewModel)
}
public var body: some View {
Text("Test")
}
}
public class CustomViewModel: ObservableObject {
var folderName: String
public init(folderName: String) {
self.folderName = folderName
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526699.html
標籤:IOS迅捷快速包
