50 votes

Exception "Pousser la même instance de contrôleur de vue plus d'une fois n'est pas supporté".

J'utilise le code suivant pour récupérer des messages et les placer dans ma boîte de réception.

MyInboxVC *inboxVC=[MyInboxVC get ];
//upload all the pending messages
UINavigationController *devNavController=[[MyappMgr get]getDeveloperNavigationController ];

[devNavController pushViewController:inboxVC animated:YES];
[devNavController setNavigationBarHidden:NO];

Je reçois l'exception

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported (<MyInboxVC: 0x1452a0>)'

Qu'est-ce que cela signifie ? Qu'est-ce que je fais de mal ?

0voto

arcady bob Points 146

Une autre option que j'ai rencontrée est que [MyInboxVC get ] ne retourne pas du tout une instance de l'objet MyInboxVC. Un signe révélateur de cela serait que l'erreur dit 'Pushing the same view controller instance more than once is not supported (notTheInboxVC : 0x9e31660)', c'est-à-dire que la classe qui est poussée plus d'une fois n'est pas la MyInboxVC attendue (une conséquence de la non-allocation de MyInboxVC).

0voto

fethica Points 449

J'ai résolu le même problème (Swift 4) avec IB segue en utilisant :

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
    return navigationController?.topViewController is MainController ? true : false 
}

-3voto

Deepak Points 34

[devNavController pushViewController:inboxVC animated:NO] ; Définir animated comme NO

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X