Как добавить что-нибудь в список избранного в SwiftUI? - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь создать список избранного, в который я могу добавлять различные элементы, но это не работает. Я сделал простой код, чтобы показать вам, что происходит.

// BookData gets data from Json
struct BookData: Codable {
var titolo: String
var descrizione: String
}

class FavoriteItems: ObservableObject {
@Published var favItems: [String] = []
}

struct ContentView: View {
@ObservedObject var bookData = BookDataLoader()
@ObservedObject var favoriteItems = FavoriteItems()

var body: some View {
    NavigationView {
        List {
            NavigationLink(destination: FavoriteView()) {
                Text("Go to favorites")
            }
            ForEach(0 ..< bookData.booksData.count) { num in
                HStack {
                    Text("\(self.bookData.booksData[num].titolo)")

                    Button(action: {
                              self.favoriteItems.favItems.append(self.bookData.booksData[num].titolo)
                    }) {
                        Image(systemName: "heart")
                    }
                }
            }
        }
    }
}
}

struct FavoriteView: View {
@ObservedObject var favoriteItems = FavoriteItems()

var body: some View {
    List {
        ForEach (0 ..< favoriteItems.favItems.count) { num in
            Text("\(self.favoriteItems.favItems[num])")
        }
    }
}
}

Когда я запускаю приложение, я могу go перейти в избранное, но после добавления элемента я не могу. Моя цель - добавить элемент в избранное и иметь возможность сохранить его после закрытия приложения

1 Ответ

0 голосов
/ 09 мая 2020

FavouriteItems модели представления внутри ContentView необходимо передать в FavoriteView, потому что вам нужна ссылка на FavoriteItems для перезагрузки FavoriteView при добавлении новых данных.

Измените на

NavigationView(destination: FavoriteView(favoriteItems: favoriteItems)) @ObservedObject var favoriteItems: FavoriteItems

Будет нормально.

Спасибо, X_X

...