Я пытаюсь отправить данные из FirstView в список в структуре myMoodList. Моя проблема заключается в том, что данные, отправленные в myMoodList, не добавляются в список. Поэтому я добавил фиктивную кнопку в навигационную панель, чтобы добавить строку, содержащую данные.
Вот мой код,
var body: some View {
NavigationView{
VStack{
Text(currentMood)
}
}.navigationBarItems(trailing: NavigationLink(destination:MyMoodList(currentMood: currentMood)) {
Text("Next")
}
).navigationBarTitle("Mood People", displayMode: .inline)
}
Итак, currentMood - это строка и ее значение "Happy".
Вот мой основной вид.
struct moodStructure: Identifiable,Decodable {
let id = UUID()
let myMood: String
}
class MoodViewModel: ObservableObject {
@Published var moodStatus = "Test on MoodObjectModel"
@Published var moodArray: [moodStructure] = [
.init(myMood: "Happy"),
.init(myMood: "Sad")
]
func addItem(moodStatus: String) {
moodArray.append(moodStructure(myMood: moodStatus))
print(moodArray.capacity)
}
func didChange() {
self.moodStatus = "Test inside did change"
}
}
struct MyMoodList: View {
@ObservedObject var moodVM = MoodViewModel()
@State var currentMood: String
var body: some View {
NavigationView {
List() {
ForEach(moodVM.moodArray,id: \.myMood) { item in
HStack {
VStack {
Text(item.myMood)
Text("Feb/3/2020")
.font(.callout)
}
Spacer()
Text(">")
.fontWeight(.semibold)
}
}
}.navigationBarTitle("Tracker")
.listStyle(GroupedListStyle())
.navigationBarItems(trailing: Button(action: {
self.moodVM.addItem(moodStatus: self.currentMood)
}) {
Image(systemName: "plus")
})
}
}}
Таким образом, структура MyMoodList имеет навигациюBarButton, я поставил ее просто для того, чтобы убедиться, что данные успешно отправлены из первого просмотра в MyMoodList. но я хочу, чтобы, как только пользователь перешел от firstView к MyMoodList, он автоматически добавился в список. Я не хочу использовать кнопку, чтобы добавить ее в список.
Я не знаю, не обновляется ли список автоматически или список загружается первым, прежде чем элементы были добавлены в moodArray. внутри класса MoodViewModel.
Спасибо.
ОБНОВЛЕНИЕ:
на моем FirstView У меня
.navigationBarItems(trailing: NavigationLink(destination:MyMoodList(currentMood: currentMood, addNewPost: true))
на MyMoodList Class I добавлено @State var addNewPost: Bool
.onAppear() {
if self.addNewPost == true {
self.moodVM.addItem(moodStatus: self.currentMood)
self.addNewPost = false
} else {
print("Nothing !!")
}
}