Открыть UIViewController из схемы URL после push-уведомления

Я хотел бы открыть конкретный UIViewController в зависимости от идентификатора, который я получаю из схемы URL.

Например, myapp://news/285 откроет «новости» UIViewController, отображающие эту конкретную новость.

Я получаю уведомление здесь:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)source
         annotation:(id)annotation
{   
    if ([[url scheme] isEqualToString:@"myapp"]) {

        NSString *urlString = url.absoluteString;

...

        return YES;
    }

    return NO;
}

Но как я должен нажать UIViewController? Я не могу получить доступ к навигационному контроллеру отсюда.

(Я думал об отправке уведомления с помощью NSNotficationCenter на мою домашнюю страницу с идентификатором и отправке оттуда UIViewController. Что вы думаете?)

Спасибо


person Nicolas Roy    schedule 12.12.2013    source источник


Ответы (3)


Вы знаете, что просматриваете настройки. Поэтому, когда вы rootViewController является UINavigationController, вы можете просто использовать:

UINavigationController *navCon = (UINavigationController*)self.window.rootViewController;
[navCon pushViewController:myPushedVC animated:NO];

Если нет, то, возможно, проще использовать подход с уведомлением.

person lukaswelte    schedule 12.12.2013

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

person amb    schedule 12.12.2013

Если вы используете панель вкладок, используйте следующий код.

UINavigationController *navigationController = (UINavigationController *) tabBar_Controller.selectedViewController;

вы можете установить выбранный контроллер представления в соответствии с вашими требованиями.

Если вы не используете панель вкладок

UINavigationController *navigationController = (UINavigationController*)self.window.rootViewController;

Теперь вы можете нажать на любой вид.

person Siba Prasad Hota    schedule 12.12.2013