0

Je dois effectuer un lien en profondeur vers un UIViewController auquel on peut accéder à partir d'un autre UIViewController qui réside dans un UINavigationViewController qui est lui-même un onglet dans un UITableViewController.Comment effectuer un lien en profondeur vers un UIViewController accédé à partir d'un UIViewController dans un UINavigationController dans un UITabBarViewController?

Fondamentalement, il ressemble à ceci

UITabBarViewController -> (chaque onglet) UINavigationController -> UIViewController -> (presse UIBarButtonItem) -> TheViewControllerIWant

En raison des contraintes du projet sur lesquels je travaille, Tout cela a été créé par programme dans mon AppDelegate. Je ne peux pas utiliser Storyboards pour résoudre ce problème.

Voici mon code existant. Il me reçoit au ViewController, mais ne me donne pas un moyen pour revenir à l'ViewController dans l'onglet

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

    if ([url.scheme isEqualToString: @"myApp"]) { 

     if ([url.host isEqualToString: @"account"]) 
     { 
      self.window.rootViewController = [[EditAccountViewController alloc] init]; 
     } 
} 

J'ai aussi essayé cela comme un début, mais n'a aucun moyen de naviguer vers l'avant à la prochaine ViewController de celui du TabBar à lui:

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

    if ([url.scheme isEqualToString: @"myApp"]) { 

     if ([url.host isEqualToString: @"account"]) 
     { 
      [_tabBarController setSelectedIndex:0]; 
      self.window.rootViewController = _tabBarController; 
     } 
    } 
} 

Comment puis-je accomplir cette

Répondre

-1

Eh bien, vous devez déclencher manuellement toutes les actions alors ....

donc vous devez d'abord sélectionner le premier onglet sur votre TabBarController Ensuite, vous aurez besoin pour obtenir le UIViewController du premier onglet et pousser la destination ViewController dans le contrôleur de navigation ...

[_tabBarController setSelectedIndex:0]; 
UIViewController *myVC = self.tabBarController.viewControllers.firstObject; 
UIViewController *destinationVC = [[UIViewController alloc] initWithNibName:@"vc.nib" bundle:[NSBundle mainBundle]]; 
[myVC.navigationController pushViewController:destinationVC animated:YES]; 
+0

Si elle était la 2e 3e objet etc dans une barre d'onglets, y aurait-il un objet .secondObject .thirdObject correspondant pour appeler vcs? – DCIndieDev

+0

Si j'avais besoin d'aller un niveau plus profond et pousser un autre VC après celui pour la réponse ci-dessus, comment ferais-je cela? – DCIndieDev

+0

Si vous voulez conserver la pile de navigation dans un ordre particulier, vous devrez pousser un nouveau viewController sur la pile après le prochain appui. Si vous ne vous souciez pas de la pile, vous pouvez initier le dernier contrôleur View de destnation et le pousser comme le premier VC dans la pile de navigation. Pour ce qui est de votre autre question, 'self.tabBarController.viewControllers' est un' NSArray' donc vous référenceriez d'autres ViewControllers comme '[self.tabBarController.viewControllers objectAtIndex: 2]; ' , 3, 4, etc .... – Lefteris