2012-09-24 12 views
1

У меня возникли проблемы с методом handleOpenURL в моем делете приложения. У меня есть rootviewcontroller, который должен отображаться нормально, но когда файл открывается в моем приложении, мне нужен метод handleOpenURL для представления нового диспетчера представлений и отправки информации url. Проблема в том, что я не могу представить modal view controller из моего делегата приложения. Кроме того, когда я пытаюсь вызвать метод в моем RootViewController представить modalviewcontroller яручкаOpenURL способ. Присутствует modalviewcontroller и передает URL-адрес

Warning: Attempt to present ... whose view is not in the window hierarchy! 

Так что, я думаю, я просто искал решение, которое представит новый контроллер модального вида и передать URL-адрес информации к этому классу. Это метод делегирования приложения.

- (void)handleOpenURL:(NSURL *)url { 

} 

Спасибо за вашу помощь

+0

Вы хотите создать настраиваемые схемы URL? –

ответ

4

В вашем RootViewController, создать экземпляр AppDelegate так же, как

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication]delegate]; 
    appDelegate.rootViewControllerInstance = self; 

затем подвергают

[appDelegate handleOpenURL:yourURL]; 

также создать callBackFunction например:

-(void)callBack:(NSUrl *)url;

Теперь в классе AppDelegate создать property вашей RootViewController

и appDelegate ваша функция, как указано таким образом ..

- (void)handleOpenURL:(NSURL *)url { 
[rootViewControllerInstance callBackUrl:url]; 
} 
+0

Я вижу, что должно произойти, но я не могу заставить его работать. Кто-нибудь нашел более длинный пример? –

1
  1. В раскадровке добавить контроллер представления вы хотите , добавив новый контроллер представления и установив свой класс тому, который вы представляете.
  2. Управление перетаскиванием с контроллера корневого представления на новый контроллер, который создаст segue.
  3. Задайте имя для identifier of segue, чтобы он был показан в порядке.
  4. В контроллере корневого просмотра вызовите [self performSegueWithIdentifier:@"MySegueIdentifier"];.
  5. В контроллере корневого представления prepareForSegue установлены любые атрибуты, включая, например, URL.