Как я могу добавить / удалить ячейки в представлении таблицы более элегантно?
Я думаю, что это, вероятно, проблема X Y, поэтому сначала я дам некоторую справочную информацию.
Я создаю приложение, которое может показать «форму». Пользователь может заполнить форму с некоторыми вещами и создать некоторые пользовательские вещи.
Я думаю, что наиболее подходящим является использование табличного представления для формы. И я могу отобразить все текстовые поля, которые необходимо заполнить, в каждой ячейке таблицы.
Вот скриншот:
Кнопка «Добавить новый ввод» вставит новую ячейку внизу при нажатии. И если вы проведете одним из входов влево, вы получите кнопку «Удалить». Вы можете использовать это для удаления ввода.
Как видите, в этом табличном представлении нужно добавлять и удалять строки.
Первоначально я использовал Cocoapod под названием «TableViewModel», что делает это очень легко. Но потом я нашелдействительно серьезная ошибка в библиотеке, поэтому я не хочу больше его использовать.
Я пытался использовать вид таблицыdeleteRowsAtIndexPaths
а такжеinsertRowsAtIndexPaths
методы. Но если я сделаю это так:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "Hello"
return cell
}
// I use motionEnded here because I don't want to add a button or anything just to test this
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) {
tableView.deleteRowsAtIndexPaths([NSIndexPath(forRow: 0, inSection: 0)], withRowAnimation: .Fade)
}
Это приведет к исключению, говорящему о том, что табличное представление несовместимо с источником данных после того, как я удалил одну строку. Это означает, что у меня должен быть код для обработки этого несоответствия. Это определенно сделает мой код сложнее для чтения.
То же самое относится и к методу вставки.
Кроме того, мне нужно отслеживать, сколько строк в каждом разделе. И мой код просто становится очень грязным и неуправляемым со всем этим.
Я также искал другие библиотеки, но все они действительно странные и не такие простые, как "tableViewModel". Кажется, все они требуют от меня создания модели для табличного представления. Я не понимаю, как это сделать в моем случае. Я просто хочу отобразить кучу текстовых полей!
Как я могу вставить или удалить строки более элегантно? Я думаю, что мне либо нужно написатьextension
из таблицы или научиться писать модель для моей таблицы. Но я не могу сделать ни один из этих методов.