У меня есть вопрос SwiftUI, на который нет ответа или дубликат другой проблемы, а SwiftUI довольно новый.
Следующий код, насколько я понимаю, показывает переключение фона кнопки контроль. Количество лайков увеличивается, как и ожидалось, но изменения состояния, похоже, не передаются в структуру Book.
Все, что я прочитал, - это то, что в предварительном просмотре вам необходимо использовать: .constant(x)
внутри представление PreviewProvider.
Однако это не работает, и кнопка с лайками не имеет ни переднего плана, ни цвета фона.
При отладке приложения результат книги понравился действительно меняется. Но цвета переднего плана / фона нет.
Вот код для вида.
import SwiftUI
struct BookDetailView: View {
@Binding var book: Book
@State var likes: Int = 0
var body: some View {
VStack {
Text(book.title)
Image(book.imageName)
.resizable()
.aspectRatio(contentMode: .fit)
.scaledToFit()
Button(action: {
self.book.isLiked.toggle()
self.likes = self.likes + 1
}) {
Text("? Like \(likes)")
.padding()
.foregroundColor(self.book.isLiked ? .secondary : .primary)
.background(self.book.isLiked ? Color.rayWenderlichGreen : Color.white)
.cornerRadius(10)
}
}
}
}
struct BookDetailView_Previews: PreviewProvider {
static var previews: some View {
BookDetailView(book: .constant(Book.demoBooks.randomElement()!))
}
}
Вот настоящая модель книги
import SwiftUI
struct Book: Identifiable {
var id = UUID()
var title: String
var imageName: String
var isLiked = false
}
extension Book: Equatable {
static func == (lhs: Book, rhs: Book) -> Bool {
return lhs.id == rhs.id
}
}
Я вложил некоторое время, пытаясь понять, почему это происходит, и кажется, что это может быть просто ошибка SwiftUI.
Есть мысли или предложения?