Comment accéder à ObjectAtIndex dans tabBarController avec Swift?
j'ai l'habitude de dire en obj-c
[self.tabBarController.viewControllers objectAtIndex:1];
mais maintenant, en swift n'ObjectAtIndex plus
self.tabBarController.viewControllers.ObjectAtIndex
Mise à jour
ok, je vais faire simple permet de considérer que j'ai tabBarController il contient 2 objet
[FirstViewController,SecondViewController]
et je suis en train de faire un délégué entre l'objet
voici le code pour définir le délégué
var Svc:SecondViewController = self.tabBarController.viewControllers[1] as SecondViewController!
Svc.delegate = self
quand je le lance , j'ai eu cette erreur 0x1064de80d: movq %r14, %rax et pas de console d'erreur s'affiche
OriginalL'auteur Amr Mohamed | 2014-08-19
Vous devez vous connecter pour publier un commentaire.
Votre code est OK:
... cependant, vous pouvez omettre
!
d'interrogation à la fin et:SecondViewController
définition de type de car il peut être déduit par le casting:Le problème apparaît parce que vous essayez de lancer à la mauvaise classe.
Essayez d'imprimer à la journal de débogage du nom de la classe de l'objet à
[1]
; ajouter ce avant votre plâtre pour vérifier le nom de la classe:Mise à JOUR:
Comme nous l'avons compris dans les commentaires, vous devriez cast reçu vue-contrôleur de
UINavigationController
:Plus tard, vous pouvez examiner
nc.viewControllers
de la propriété et de voir si, par exemple, sontopViewController
estSecondViewController
:UINavigationController
et maintenant je dois passer le UINavigationController première à droite ?Cela signifie que, à la 1ère position dans votre
viewControllers
tableau que vous avezUINavigationController
qui n'est évidemment pasSecondViewController
classe que vous utilisez pour le casting. C'est pourquoi vous obtenez le message d'erreur. Avez-vous votreSecondViewController
instance de classe enveloppé à l'intérieur de navigation-vue-contrôleur?ouais j'ai un UINavigationController avant la fois de la première et de la deuxième viewController
Voir ma mise à jour de la réponse.
OriginalL'auteur Keenle
Vous n'avez pas besoin
objectAtIndex
rapide, il suffit d'utiliser lasubscript
opérateur:0x1064de80d: movq %r14, %rax
Êtes-vous sûr il y a des objets qui
viewControllers
tableau?ouais, bien sûr que j'ai 4 objet
Pouvez-vous mettre à jour votre question avec un peu plus de contexte? Il sonne comme vous êtes maintenant un distinct d'erreur, mais il est difficile de dire avec une seule ligne de code. Aussi, ne vous obtenez des erreurs dans la console de débogage quand il se bloque?
avez-vous d'autres suggestions ?
OriginalL'auteur Mike S