gpt4 book ai didi

swiftui - 刷新 NavigationView 环境对象

转载 作者:行者123 更新时间:2023-12-02 04:23:18 28 4
gpt4 key购买 nike

我正在尝试创建一个可编辑的环境对象并将其放入列表中。
例如,仅当我切换选项卡时(因此每当我离开 NavigationView 时)然后返回时,变量才会刷新。

之前使用 ModalView 也是如此。也许这是一个错误?还是我做错了什么?

import SwiftUI
import Combine

struct TestView: View {

@State var showSheet: Bool = false
@EnvironmentObject var feed: TestObject
func addObjects() {
var strings = ["one","two","three","four","five","six"]
for s in strings {
var testItem = TestItem(text: s)
self.feed.items.append(testItem)
}
}

var body: some View {
TabView {
NavigationView {
List(feed.items.indices, id:\.self) { i in
NavigationLink(destination: detailView(feed: self._feed, i: i)) {
HStack {
Text(self.feed.items[i].text)
Text("(\(self.feed.items[i].read.description))")
}
}
}
}
.tabItem({ Text("Test") })
.tag(0)

Text("Blank")
.tabItem({ Text("Test") })
.tag(0)
}.onAppear {
self.addObjects()
}
}
}

struct detailView: View {
@EnvironmentObject var feed: TestObject
var i: Int
var body: some View {
VStack {
Text(feed.items[i].text)
Text(feed.items[i].read.description)
Button(action: { self.feed.items[self.i].isRead.toggle() }) {
Text("Toggle read")
}
}
}
}

final class TestItem: ObservableObject {
init(text: String) {
self.text = text
self.isRead = false
}
static func == (lhs: TestItem, rhs: TestItem) -> Bool {
lhs.text < rhs.text
}
var text: String
var isRead: Bool

let willChange = PassthroughSubject<TestItem, Never>()
var read: Bool {
set {
self.isRead = newValue
}
get {
self.isRead
}
}
}

class TestObject: ObservableObject {
var willChange = PassthroughSubject<TestObject, Never>()

@Published var items: [TestItem] = [] {
didSet {
willChange.send(self)
}
}
}

最佳答案

尝试在您的目的地传递 .environmentObject:

NavigationLink(destination: detailView(feed: self._feed, i: i).environmentObject(x))

关于swiftui - 刷新 NavigationView 环境对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57729893/

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