Основано на учебном пособии по iDine от HackingWithSwift, созданного приложения типа заказаРазница лишь в том, что я хочу отобразить NavigationLink и в OrderView. Вместо того, чтобы ссылаться на представление строк, которое имеет навигационную ссылку, я кодировал навигационную ссылку в OrderView.swift- NavigationView-> List-> Section-> ForEach. Когда в заказе 2 или более одинаковых предмета, он открывает NavLink, который много раз возвращается к странице заказа. Это происходит в любой строке, к которой вы прикасаетесь. Я получил эту ошибку: UITableView было приказано расположить видимые ячейки и другое содержимое, не находясь в иерархии представлений (табличное представление или одно из его суперпредставлений не было добавлено в окно)
Я новичок в SwiftUIи программирование Swift и iOS в целом. Я пытался добавить Row View, но не смог понять, как в конкретном контексте. Я пытался создать счетчик в строке, чтобы исключить необходимость добавления нескольких экземпляров, но также не смог этого сделать, не мог понять, как добавить счетчик чисел или переменную, которая будет кодировать в аргумент ForEach и быть специфичной длякаждый ряд.
struct OrderView: View {
@EnvironmentObject var order: Order
var body: some View {
NavigationView {
List {
Section {
ForEach(order.entry) { item in
NavigationLink(destination: OrderDetail(entry: item)){
HStack {
Text(item.level)
Text("-")
Text(item.name)
Text(",")
Image(item.imageName).resizable()
.frame(width: 32, height: 23)
Spacer()
Text("\(item.spellCount)")
}
}
}.onDelete(perform: deleteItems)
}
}.navigationBarTitle("Prepared Spells")
.listStyle(GroupedListStyle())
.navigationBarItems(trailing: EditButton())
}
}
func deleteItems(at offsets: IndexSet) {
order.entry.remove(atOffsets: offsets)
}
}