Мне нужно реализовать 1-уровневый контурный вид из UITableView. Ячейки, у которых есть дети, будут иметь символ «+», и если пользователь нажимает на него, ячейки под ним должны сдвигаться вниз, а дочерние ячейки текущей выбранной строки должны появляться. Скольжение ячеек должно быть видимым, и если пользователь нажимает кнопку «-» уже расширенной строки, дочерние ячейки должны возвращаться в родительский.Вид структуры из UITableView
Я пробовал поиск по Google, но не нашел указателей.
Как начать, должен ли я подкласс UITableView? Или я должен реализовать свой собственный подкласс класса и обрабатывать все там?
Я как-то чувствую, что подкласс UITableView будет проще, потому что он будет обрабатывать весь выбор строки для нас, но я не могу понять, как это сделать.
Спасибо и наилучшими пожеланиями, Радж
Блестящий подход, почему я не подумал об этом? Ну, у меня есть одно сомнение, как, как мне добиться скользящего эффекта строк, которые ниже строки, которую нужно расширить? Есть идеи для этого? Согласно этому подходу, я полагаю, мы должны обеспечить высоту строки для каждой строки, поэтому, когда расширяется строка таблицы, мы предоставляем новую строку в зависимости от количества детей. Скажем, высота оригинала была 20, и теперь она имеет 5 детей, новая высота строки будет равна 100. Я полагаю, что таблица будет просто появляться с новой высотой строки без эффекта скольжения, как обойти это? –
Ну, я не знаю, работает ли это, но когда кнопка + была нажата, чтобы развернуть строку и показать дочерние строки, вы должны получить фрейм ячейки и изменить свойство size.height в анимации UIView блок. Эта работа для меня, когда я использую информационные панели, чем сворачивается и расширяется. Возможно, это работает и в этой ситуации ^^ – emenegro
Примечание: Это хороший подход, но мне было очень сложно, когда дело доходило до перезагрузки данных таблицы и во время анимации. Новый tableView может быть встроен в ячейку, увеличивая его высоту, но когда анимация вступает в игру, tableView добавляется как subview идет позади ячейки, причина - я не знаю!Также я действительно сомневаюсь, что вызов tableView reload для main tableView перезагрузит внутренний tableView или нет. Если нет, мы можем перезагрузить данные, когда делегат -tableView: cellForRowAtIndexPath: из первого tableView, но я сомневаюсь в порядке перезагрузки. Лучший подход - сгладить структуру дерева. –