Я постараюсь дать вам несколько советов, как решить эту проблему. Лучший способ, который я могу себе представить, - это создание табличного представления, которое будет постоянно обновлять свой источник данных каждый раз, когда вы нажимаете на элемент в списке.
Давайте проясним: представьте, что у вас есть первое табличное представление со списком zip-файлов. Вы нажимаете на строку, распаковываете zip-файл в локальную папку, а затем помещаете в свой контроллер навигации другую таблицу, в которой вы увидите содержимое разархивированного файла.
В этой новой таблице будет сохранен указатель на родительскую папку (назовем ее parent
), в начале она будет иметь значение nil
, и он будет содержать список содержимого папки, в которой вы находитесь. Итак, этот источник данных покажет вам содержимое корневой папки (той, в которой вы распаковали zip-файл), с папками и файлами.
Когда вы нажимаете на строку, представляющую файл, вы реализуете соответствующую логику (откройте файл, загрузите его, отредактируйте, отправьте по электронной почте или что-то еще)
Когда вы щелкаете по строке, представляющей папку, вы должны:
- Установите для источника данных
parent
папку, в которой вы находитесь (в данном случае корневую папку)
- Прочитать содержимое выбранной вами папки
- Обновить данные источника данных только что прочитанным содержимым
- Обновить данные в табличном представлении (например,
[tableView reloadData]
)
В вашем табличном представлении должна быть кнопка или выделенная строка для перехода назад к родительской папке (той, которая содержится в параметре parent
), чтобы вы могли перемещаться назад и вперед в любое время.
Я думаю, что это решение должно работать нормально.