Pousser une manette de navigation n'est pas pris en charge
Dans mon MainStoryBoard je veux pousser un viewController à la fenêtre detravail mais j'obtiens cette erreur:
NSInvalidArgumentException', la raison: 'Pousser une manette de navigation n'est pas pris en charge'
- Je régler l'identifiant 'JSA' ID pour le viewController sur la table de montage séquentiel.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0) {
SWSJSAViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"JSA"];
[self.navigationController pushViewController:viewController animated:YES];
}
}
- Vous devez pousser une-vue-contrôleur, pas une autre manette de navigation. Si vous voulez vraiment afficher une autre manette de navigation, vous avez besoin de la présenter, de ne pas pousser.
- Merci beaucoup du prêt, l'erreur a disparu, mais il va à la tableViewController, je le veux sur les détails, Merci
- Jetez un oeil à ce fil stackoverflow.com/questions/10817305/... (j'ai une réponse qui a fonctionné pour moi, mais peut-être l'un des les autres feront l'affaire pour vous.)
- Comme maddy dit, cela soulève une exception avec la "Pousser une manette de navigation n'est pas pris en charge". Vous avez à [auto presentViewController: viewController d'animation:OUI achèvement:nil];
- assurez-vous également d'hv entré storyboard identifier, dans le viewcontroller, pas dans navigationcontroller
InformationsquelleAutor Jose | 2013-07-19
Vous devez vous connecter pour publier un commentaire.
Comme rmaddy dit dans les commentaires que vous essayez de pousser une manette de navigation.
Manettes de Navigation doit être présenté (via presentViewController ou ils peuvent être ajoutés comme un childViewController) et ViewControllers doit être poussé.
Quand vous parlez poussant manette de Navigation, il est plus susceptibles que vous souhaitez présenter.
C'est le moyen le plus commun et c'est ce que vous voulez faire dans la plupart des cas.
UINavigationController
ne peut pas être poussé, il ne peut être présenté avec une nouvelle Vue de la racine de Contrôleur.Ce que vous faites ici, c'est d'abord créer un
UINavigationController
et ensuite nécessaireUIViewController
que sa racine contrôleur.Si vous avez une hiérarchie de ViewControllers et vous avez besoin de pousser vue-contrôleur qui contient manette de navigation à l'intérieur, les étapes sont les suivantes:
1) appuyez sur ViewController, contenant
UINavigationController
.À pousser
UINavigationController
, d'abord créer une sous-classe deUIViewController
, qui sera un wrapper-/conteneur de classe pour votreUINavigationController
et de son contenu.2) l'Ajout de UINavigationController comme un enfant-vue-contrôleur
Dans
viewDidLoad
de votre conteneur (que vous venez de instancié), il suffit d'ajouter quelque chose comme ceci:Objective-C
Swift 4.2+
Ce que vous faites ici est essentiellement instancier votre manette de navigation et de l'ajouter en tant que contrôleur enfant à votre enveloppe. C'est tout. Vous avez réussi à poussé votre UINavigationController.
parent.navigationItem...
. Et c'est très mauvais du point de réutilisabilité de vue des contrôleurs.