2

我有一个看起来像这样的 SwiftUI 视图(出于隐私原因进行了简化):

var body: some View {

    HStack {

        Button(action: {

            self.completed.toggle()

        }) {

            Text(self.title)

        }

        NavigationLink(destination: DetailView(task: self.task)) {

            Text(self.title)

        }

    }

}

导航工作得很好,并且DetailView有更新的状态(toggle只是切换状态),但是当我回到主视图时,状态没有更新。为什么是这样?

而且我需要按钮与文本不同 - 这可能吗?我希望按下按钮来执行按钮操作,而该行的其余部分充当NavigationLink. 我怎样才能做到这一点?

self.completed是一个CompletionStatus类,它是一个,ObservableObject具有一个@Published属性statustask@State类型Task,其中包含completed(CompletionStatus) 属性。如果我能提供更多信息,请告诉我。

这里分别是TaskCompletionStatus结构体和类:

struct Task: Identifiable {
    let id: UUID()
    var title: String
    var description: String
    @ObservedObject var completed: CompletionStatus
}

class CompletionStatus: ObservableObject {
    @Published var status: Bool

    init(_ defaultValue: Bool) {

        self.status = defaultValue

    }

    func toggle() -> CompletionStatus {

        self.status = !self.status
        return self

    }
}
4

0 回答 0