Отображение NSArray файлов в UITableView – iOS 5

У меня есть приложение, которое позволяет пользователям сохранять и открывать текстовые файлы. Сохранение и открытие файлов довольно просто и легко, но я должен дать пользователю простой способ выбрать файл для открытия. Я решил сделать это с помощью UITableView .

Когда TableView загружается в контроллер моего представления, моя цель состоит в том, чтобы заполнить TableView именами всех текстовых файлов пользователя из папки «Документы» (часть изолированной панели приложений iOS).

У меня есть общее представление о том, как это сделать:

  1. Получите содержимое папки «Документы» и поместите его в массив

    NSString *pathString = [[NSBundle mainBundle] pathForResource:@"Documents" ofType:@"txt"]; NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error:nil]; NSLog(@"Contents of directory: %@", fileList); 

    Но это всегда возвращает: (null) в окне вывода. Каков путь к папке документа моего приложения?

  2. Поместите массив в UITableView

    Я решил использовать метод numberOfRowsInSection для этого. Является ли это подходящим местом для выполнения этого типа операции? Должен ли я использовать другой метод?

  3. Наконец, приложение получит значение выбранной ячейки и использует это значение для открытия файла.


Мой главный вопрос: как я могу разместить элементы (особенно содержимое каталога) в NSArray, а затем отобразить этот массив в UITableView?

Любая помощь высоко ценится!

Вы можете получить путь, используя:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; 

Вы можете получить содержимое каталога, используя:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil]; 

Что касается отображения NSArray в UITableView, вы должны просмотреть документацию Apple по протоколу UITableView Data Source:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html

Вы используете метод cellForRowAtIndexPath для фактического заполнения таблицы, что-то вроде этого будет работать:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyIdentifier"] autorelease]; } cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; cell.textLabel.text = [fileList objectAtIndex:indexPath.row] return cell; } 
Interesting Posts

Большие центральные диспетчерские диспетчерские группы

NSUserActivity отсутствует свойство contentAttributeSet

Получение контактов / соединений LinkedIn

Настройка UITextField не редактируется или редактируется

Сигнал инициализации RACCommand не попадает в исполняемые символы

Смешанный запрос CloudKit (запрос с OR)

Как может viewControllerWithRestorationIdentifierPath: coder: найти существующий экземпляр?

Приложение iPhone зависает при выборе TableViewCell – с перерывами, после паузы / перерыва

Изменение цвета навигационных элементов по всему приложению?

Как я могу сделать ползунок Control Center доступным для редактирования?

Существует ли метод recursiveDescription для иерархии диспетчера представлений?

Можем ли мы определить, оплачивается ли SIM-карта или оплачивается с помощью iOS?

Являются ли классы Mutable более тяжелыми?

Проблема инициализации объектной модели Manged

Чтение NSUserDefaults в watchOS 2 (я знаю, что группы приложений не работают)

Давайте будем гением компьютера.