iPhone - контроллер detailView - PullRequest
       17

iPhone - контроллер detailView

0 голосов
/ 18 ноября 2010

У меня есть tableView, который перечисляет каталог содержимого, который включает файлы jpg, pdf, zip, mp3, mp4, sql, .. и даже папки. На следующем этапе у меня есть detailView, который отображает некоторые свойства выбранного файла, такие как fileName, fileSize, filePath, fileType. Все отлично работает.

Но на самом деле я планирую включить дополнительную опцию в detailView.

То есть

  1. Если выбранный файл в tableView является файлом изображения, он должен открыть imageView в detailView для отображения этого изображения.
  2. Если выбранный файл представляет собой mp3, он должен открыть проигрыватель для воспроизведения песни в detailView.
  3. Если выбранный файл является файлом видео или mp4, он должен открыть проигрыватель для воспроизведения этого видео в detailView.
  4. Если выбранный элемент является папкой, он должен снова открыть tableView, который отображает содержимое папки.
  5. Для других файлов следует выдать alertView, поскольку это неизвестный файл.

Надеюсь, моя концепция была хорошо изложена. У меня есть методы для воспроизведения файлов .mp3 и .mp4. Теперь я застрял в нажатии imageView и в случае папки. У меня нет идей, чтобы продолжить оба метода.

Это мой tableView alt text

Это мой подробный обзор видеофайла. alt text

Это мой detailView для файла .mp3 alt text

Это подробный вид, оставленный пустым для моего imageView. alt text

Пожалуйста, помогите мне продолжить некоторые примеры кодов. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 18 ноября 2010

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

. Для просмотра изображения вы захотите создать UIImage с путем.

Пример кода ниже: предположим, что pathString - это NSString* с путем к изображению, а imageView - это UIImageView, который должен отображать изображение.Этот код будет находиться в методе -viewDidLoad detailViewController, обрабатывающем отображение изображения.

UIImage* theImage = [[UIImage alloc] initWithContentOfFile:pathString];
imageView.image = theImage;
[theImage release];

Что касается представления папок, это немного отличается.Для достижения наилучшего результата вам нужно рекурсивно загрузить tableViewController, который вы используете для отображения списка файлов сейчас (чтобы он рекурсивно унаследовал всю обработку файлов / папок).

Я бы предложил добавитьпеременная экземпляра, такая как folderPath до tableViewController, которую вы установили до фактического нажатия на представление.И tableViewController должен использовать это как базовый путь.

Пример кода ниже: Предположим, что pathString - это NSString* с целевым путем, и что detailViewController теперь является экземпляром новогоtableViewController должно быть открыто.Этот код будет находиться в методе, который создаст новый detailViewController для отображения, где-то в пределах tableView:didSelectRowAtIndexPath:

detailViewController.folderPath = pathString;
[self.navigationController pushViewController:detailViewController animated:YES];

Затем вы должны реализовать в -viewDidLoad метод tableViewController, накакое содержимое папки следует прочитать из переменной экземпляра folderPath.

0 голосов
/ 18 ноября 2010

Когда вы создаете ваш detailView, вы должны перегрузить init дополнительными параметрами, которые указывают тип отображаемого носителя и URL / файл этого ресурса.

Если это для изображения, посмотрите на этот пост

0 голосов
/ 18 ноября 2010

Этот метод - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; вызывается, когда происходит прикосновение к некоторой ячейке.

Вы можете получить ячейку с помощью [yourTableView cellForRowAtIndexPath:cellIndex];

После этого вы можете увидеть свойство type и открыть соответствующий viewcontroller.[self.navigationController pushViewController:detailViewController animated:YES];

...