метод handleOpenURL. Представить modalviewcontroller и передать информацию о URL

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

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

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

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

}

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


person davis    schedule 24.09.2012    source источник
comment
Вы хотите создать собственные схемы URL?   -  person Nimit Parekh    schedule 24.09.2012


Ответы (2)


В вашем 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];
}
person AppleDelegate    schedule 24.09.2012
comment
Я вижу, что должно произойти, но не могу заставить это работать. Кто-нибудь нашел более длинный пример? - person Recycled Steel; 27.03.2014

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