Как добавить строку в список SwiftUI, в которой есть разделыIOS

Программируем под IOS
Ответить
Anonymous
 Как добавить строку в список SwiftUI, в которой есть разделы

Сообщение Anonymous »

Я хочу просто добавить строку в список в SwiftUI, как в insertRowAtindexpath в UIKIT
Я сделал все возможное провел исследование и обнаружил, что добавление раздела работает, а добавление строки в раздел не работает.
Я что-то упустил.
Код

Код: Выделить всё

import SwiftUI

struct TestList: View {

@State var sections : [SectionModel] =
[
SectionModel(id: 1, rows:
[
RowModel(id: 1, name: "1"),
RowModel(id: 2, name: "2")
]
),

SectionModel(id: 2, rows:
[
RowModel(id: 1, name: "1"),
RowModel(id: 2, name: "2")
]
)
]

var body: some View {
List{

ForEach (sections) { section  in

Section(){
ForEach(section.rows) {row in

Button {
addRow() // does not work
addSection() // works
} label: {
Text(row.name)
}
}

}

}
}
}
func addRow() {

sections[0].addRow(row: RowModel.init(id: 10, name: "10"))
}

func addSection() {

sections.append(SectionModel.init(id: 23, rows: [RowModel.init(id: 10, name: "10")]))
}

}

class RowModel : Identifiable{

var id: Int
let name : String

init(id: Int, name: String) {
self.id = id
self.name = name
}
}

class SectionModel : Identifiable{

var id  : Int
var rows : [ RowModel]

init(id: Int, rows:[ RowModel]) {
self.id = id
self.rows = rows
}

func addRow (row : RowModel) {

rows.append(row)

}

}

ОБНОВЛЕНИЕ
Это работает,

Код: Выделить всё

    func addrow() {

var section = sections[0]
section.addRow(row: RowModel.init(id: 10, name: "10"))
sections[0] = section
}
Здесь я хотел бы отметить следующее:
Если раздел (который является элементом/элементом в разделах) который упоминается в ForEach как источник данных) изменяется напрямую, это оказывает влияние на пользовательский интерфейс.
если какой-либо элемент/элемент (строка) внутри раздел меняется (элементы 2-го уровня) эффекта нет в Пользовательский интерфейс.
Кроме того, как указано в выбранном ответе, раздел передается при нажатии кнопки, изменяет раздел, поэтому он работает.
Структура или класс не имеют никакого отношения к этой проблеме.

Подробнее здесь: https://stackoverflow.com/questions/766 ... s-sections
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»