iOS — TableViewCell развернуть/свернуть

я хочу создать TableView с ячейками расширения/свертывания, и я подумал, что это можно сделать двумя способами:

  1. Играй с heightForRowAtIndexPath

  2. Создайте 2 разные ячейки с разными идентификаторами и каждый раз загружайте нужную.

Я хочу, чтобы ячейка расширялась/сворачивалась с анимацией, и пользователь мог расширять более одной ячейки.

Какой из них лучше?

Заранее спасибо!


person gran33    schedule 09.10.2013    source источник
comment
Что появится после того, как пользователь расширит представление ячейки? Это точно такая же ячейка с чем-то дополнительным, скрытым по умолчанию и расходуемым по требованию? Или расположение ячеек будет полностью изменено.   -  person Grzegorz Krukowski    schedule 09.10.2013


Ответы (3)


Зависит от вашей ячейки, до и после коллапса, и хотите ли вы анимировать ее или нет.

Опции:

  1. Если содержимое такое же или с небольшими дополнениями, и вы хотите его оживить. Используйте эту опцию.

  2. Если содержимое резко меняется, используйте этот вариант. И я не уверен, что анимация в этом случае легкая.

Удачи, нужна дополнительная помощь, дайте мне знать! ;Д

person Albara    schedule 09.10.2013

Я думаю, вам нужно это: https://github.com/seletz/CocoaTreeViewExample

Я сделал расширяемое/сворачиваемое древовидное представление, используя тот же код, который сейчас выглядит так в моем приложении:

введите здесь описание изображения

person Vaibhav Saran    schedule 09.10.2013

Мне нужно было что-то подобное, я хотел иметь возможность показывать и скрывать contextMenu для ячейки табличного представления. Так что в итоге я использовал только одну ячейку как для расширенного, так и для свернутого состояния, и у меня было «подвид контекстного меню» (это то, что я хотел для расширенного вида) и обновил его кадр для анимации. Хитрость в том, что когда вы хотите развернуть/свернуть ячейку с красивой анимацией, вам лучше использовать методы beginUpdates и endUpdates вместо методов reloadData или reloadRowsAtIndexPaths:withRowAnimation:. Что-то такое:

// setContextMenuHidden:animated: updates frame and alpha for the context menu
// view (which is a subview of cell content view)
[cell setContextMenuHidden:NO animated:YES];

[self.tableView beginUpdates];
[self.tableView endUpdates];
person dariaa    schedule 09.10.2013