Проблема с несколькими руководствами, в частности http://blog.originate.com/blog/2014/04/22/deeplinking-in-ios/
Я устанавливаю схему URL и хорошо работаю, чтобы запустить приложение из другого приложения, но передача в хост или URL не работает, как кажется. Я использую раскадровки и конструктор интерфейсов для всех макетов представления.
В руководстве показан этот openURL в appDelegate:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
if([[url host] isEqualToString:@"page"]){
if([[url path] isEqualToString:@"/page1"]){
[self.mainController pushViewController:[[Page1ViewController alloc] init] animated:YES];
}
return YES;
}
}
Вот моя версия упрощена и быстро от нескольких других источников, т.е. Получить экземпляр ViewController из AppDelegate в Swift Я пропускаю условное выражение для хоста url на данный момент, чтобы удалить потенциальные другие переменные в проблеме.
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {
var rootViewController = self.window!.rootViewController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var profileViewController = mainStoryboard.instantiateViewControllerWithIdentifier("profile") as ProfileViewController
rootViewController.navigationController.popToViewController(profileViewController, animated: true)
return true
}
Быстрая версия вызывает сбой:
fatal error: unexpectedly found nil while unwrapping an Optional value
Кажется, что rootViewController еще не имеет навигационного контроллера?