Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
#1

Файловый менеджер открытие нужного контроллера - Программирование iOS/iPhone

30.04.2014, 01:39. Просмотров 542. Ответов 6
Метки нет (Все метки)

Здравствуйте, в целях изучения делаю проект файловый менеджер. Есть разные типы файлов (документы, pdf, картинки). Все файлы выводятся в TableView, папки открываются, а вот как теперь мне открыть файлы? Как отобразить нужный контроллер? Например для документов открывается контроллер с WebView, а для картинок с ImageView. Как я понял, контроллеры должны бить заранее созданы, но как их привязать? Через сегвеи, а потом проверять расширение файла и переходить по нужному сегвею?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
30.04.2014, 07:06     Файловый менеджер открытие нужного контроллера #2
Slava-hacker32,
Цитата Сообщение от Slava-hacker32 Посмотреть сообщение
Через сегвеи, а потом проверять расширение файла и переходить по нужному сегвею?
Как вариант, да.
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
30.04.2014, 09:35  [ТС]     Файловый менеджер открытие нужного контроллера #3
А как в коде это написать? Проверку расширения файла я могу сделать, а как прописать переход?

Objective-C
1
2
NSString* extensionPath = [fileName pathExtension];
if ([extensionPath isEqualToString:@"doc"]) { } //проверка расширения файла
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
30.04.2014, 09:57     Файловый менеджер открытие нужного контроллера #4
Slava-hacker32,
смотрите метод
Objective-C
1
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender;
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
01.05.2014, 23:41  [ТС]     Файловый менеджер открытие нужного контроллера #5
Я понимаю, что переход происходит в performSegueWithIdentifier, но от одной ячейки можно сделать только один Segue.
В коде я делаю проверку файл или папка выбраны.
Objective-C
1
2
3
4
5
6
if ([self isDirectoryAtIndexPath:indexPath]) {
        
        
        self.selectedPath = path;
        [self performSegueWithIdentifier:@"openFolder" sender:nil];
    }
Если папка, то используется тот же контроллер, для отображения содержимого папок.
Objective-C
1
2
3
4
5
-(void)prepareForSegue:(UIStoryboardSegue *)segue  sender:(id)sender {
  
 
        RSMasterViewController* mvctrlr = segue.destinationViewController;
        mvctrlr.path = self.selectedPath; }
А во как работать с файлами я не могу придумать. Если начинаю дописывать условие к if ([self isDirectoryAtIndexPath:indexPath]) то есть else , приложение вылетает (это если я не делал seque от ячейки ко второму контроллеру), а если seque есть, то он перехватывает проверку папка/файл и тогда вместо содержимого папки отображается контроллер (для файлов тоже), может я что то не то делаю? И как тогда делать проверку, какой контроллер открывать в зависимости от типа файла?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
02.05.2014, 12:44     Файловый менеджер открытие нужного контроллера #6
Slava-hacker32, Добавляйте manual segue не от UITableViewCell, а от контроллера. Их может быть много. И вызов performSegueWithIdentifier... от self(UIViewController) будет вполне корректен.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2014, 17:53     Файловый менеджер открытие нужного контроллера
Еще ссылки по теме:

Открытие пункта меню настроек по ссылке Objective-C
C# MVC Вызов нужного метода WebAPI-контроллера в зависимости от переданного параметра
Objective-C Открытие второго контроллера после удачного POST запроса
Файловый менеджер для ios
Обновление одного контроллера другим

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
03.05.2014, 17:53     Файловый менеджер открытие нужного контроллера #7
segue
через tableDidSelectRow и [Storyboard instantiateViewControllerWithIdentifier:@"name"] -> [self.navigationController pushViewController] не лучше?
Yandex
Объявления
03.05.2014, 17:53     Файловый менеджер открытие нужного контроллера
Ответ Создать тему
Опции темы

Текущее время: 13:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru