gpt4 book ai didi

swift - 如何使用 stateobject 作为参数初始化 View ?

转载 作者:行者123 更新时间:2023-12-03 21:45:04 27 4
gpt4 key购买 nike

struct ProfileEditView: View {
@ObservedObject var viewModel: UsersViewModel
@StateObject var auth: Authenticator

@State var showingImageEditor: Bool = false

init(_ viewModel: UsersViewModel, _ auth: Authenticator) {

self.viewModel = viewModel
self.auth = auth

UITableView.appearance().backgroundColor = UIColor.clear
UITableViewCell.appearance().selectionStyle = .none
}

var body: some View { }}
我正在尝试手动初始化一个带有 StateObject 的 View 作为参数。我收到一个错误: Cannot assign to property: 'auth' is a get-only property .编写初始化程序的正确方法是什么?

最佳答案

如果没有您对 Authenticator 的定义,我将无法完全重现您的代码和 UsersViewModel ,但我让它编译:

class UsersViewModel: ObservableObject {}
class Authenticator: ObservableObject {}

struct ProfileEditView: View {
@ObservedObject var viewModel: UsersViewModel
@StateObject var auth: Authenticator

@State var showingImageEditor: Bool = false

init(_ viewModel: ObservedObject<UsersViewModel>, _ auth: Authenticator) {

_viewModel = viewModel
_auth = StateObject(wrappedValue: auth)

UITableView.appearance().backgroundColor = UIColor.clear
UITableViewCell.appearance().selectionStyle = .none
}

var body: some View {
Text("something")
}
}
这些是关键的变化:
init(_ viewModel: ObservedObject<UsersViewModel>, _ auth: Authenticator) {
_viewModel = viewModel
_auth = StateObject(wrappedValue: auth)
如果你不明白我的变化,你应该谷歌

"swift property wrappers"


以更好地了解什么是属性包装器以及如何使用它们。

关于swift - 如何使用 stateobject 作为参数初始化 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64938325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com