2015-02-27 2 views
-1

Я пытаюсь реализовать собственную схему URL-адресов, где один конкретный URL-адрес (myapp: // article) открывает представление статьи. У меня нет никакого успеха.URL-адрес схемы не открывается

Обычно приложение открывает LoginViewController, как определено в раскадровке. Для схемы URL Я делаю это:

-(BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation{ 

    if ([[PocketAPI sharedAPI] handleOpenURL:url]) { 
     NSLog(@"Login complete!"); 
     return YES; 
    } else { 
     NSLog(@"url recieved: %@", url); 
     NSLog(@"scheme: %@", [url scheme]); 
     NSLog(@"query string: %@", [url query]); 
     NSLog(@"host: %@", [url host]); 

     if ([[url host] isEqualToString: @"article"]) { 
      Stream *stream = [[Stream alloc] initWithDictionary:data]; 

      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 

      ArticleViewController *articleViewController = [storyboard instantiateViewControllerWithIdentifier:@"ArticleViewController"]; 

      articleViewController.stream = stream; 

      [self.window makeKeyAndVisible]; 
      [self.window.rootViewController presentViewController:articleViewController animated:YES completion:NULL]; 
      return YES; 
     } 
     return YES; 
    } 
} 

я получаю Warning: Attempt to present <ArticleViewController: 0x79040cb0> on <LoginViewController: 0x7906f8c0> whose view is not in the window hierarchy!

Что я делаю неправильно?

+0

Является ли текущий контроллер rootViewController (aka 'LoginViewController') единственным контроллером, представленным на экране? У него есть другие контроллеры представления, представленные сверху? –

ответ

0

Попробуйте отобразить окно сначала, прежде чем создавать экземпляр вашего контроллера. Прежде чем вы создадите экземпляр окна, главный контроллер представления действительно не находится в иерархии представлений (потому что его еще нет).

Смежные вопросы