HELP! Я не могу понять это!
Чтобы помочь мне изучить SwiftUI, я делаю простое приложение со списком продуктов, используя представление списка. Есть кнопки, которые становятся зелеными или красными при нажатии для каждого элемента в списке.
Приведенный ниже код прекрасно работает, пока я не добавлю слишком много элементов в массив списка. Если список становится длиннее, чем размер экрана, и вам нужно прокрутить, то начинают происходить странные вещи. (например, кнопка не станет зеленой, или элемент на следующей странице вместо этого станет зеленым)
Я тестировал на разных симуляторах, а на iPhone SE я могу получить 14 элементов в списке, прежде чем он начнет возиться вверх. На iPhone 11 Pro Max я могу получить 22 элемента в списке, прежде чем он начнет портиться. Это как-то связано с длиной экрана и, если требуется прокрутка.
Вот код:
import SwiftUI
struct CheckboxFieldView : View {
@State var checkState:Bool = false ;
var body: some View {
Button(action:
{
self.checkState = !self.checkState
}) {
Rectangle()
.fill(self.checkState ? Color.green : Color.red)
.frame(width:20, height:20, alignment: .center)
.cornerRadius(5)
}
.foregroundColor(Color.white)
}
}
struct ContentView: View {
// let items = (1...100).map { number in "Item \(number)" }
let items = ["Bread", "Milk", "Cheese", "Granola", "Nuts", "Cereal", "Rosemary", "Tomato Sauce", "Bean with Bacon Soup", "Tea", "Chocolate Milk", "Frozen Blueberries", "Frozen Mixed Berries", "Frozen Strawberries", "Grapes"]
var body: some View {
NavigationView {
List(items, id: \.self) { item in
HStack{
CheckboxFieldView()
Text(item)
self.padding()
Text ("Location")
}
}.navigationBarTitle("Grocery List", displayMode: .inline)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}