Ich bin gerade auf einen Absturz gestoßen, der eine NSInvalidArgumentException
Meldung mit dieser Meldung in einer App zeigt, die dies zuvor noch nicht getan hat.
Die Anwendung hat versucht, einen aktiven Controller UITabBarController: 0x83d7f00 modal darzustellen.
Ich habe eine , UITabBarController
die ich in der erstellen AppDelegate
und geben ihm die Anordnung von UIViewControllers
.
Eine davon möchte ich modal präsentieren, wenn ich darauf tippe. Ich habe das getan, indem ich die Delegate-Methode implementiert habe
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
Wenn dieser Ansichtscontroller zu der Klasse gehört, die ich modal präsentieren möchte, gebe ich NO zurück und tue dies
[tabBarController presentModalViewController:viewController animated:YES];
Und jetzt erhalte ich diesen Fehler, was zu bedeuten scheint, dass Sie einen View Controller, der an einer anderen Stelle aktiv ist (in der Registerkartenleiste ...), nicht modal darstellen können. Ich sollte also sagen, dass ich auf XCode 4.2 Developer Preview 7 bin Dies ist iOS 5 (ich weiß über die NDA Bescheid, aber ich glaube, ich gebe keine verbotenen Details). Ich habe derzeit keine XCode-Installation, um zu testen, ob dies beim Kompilieren mit dem iOS4 SDK abstürzt, aber ich bin mir fast sicher, dass dies nicht der Fall ist.
Ich wollte nur fragen, ob jemand dieses Problem erlebt hat oder einen Vorschlag hat
quelle
Antworten:
Angenommen, Sie haben drei View-Controller, die wie folgt instanziiert wurden:
Sie haben sie einer Registerkartenleiste wie der folgenden hinzugefügt:
Jetzt versuchen Sie so etwas zu tun:
Dies gibt Ihnen einen Fehler, da dieser Tab Bar Controller den von Ihnen angegebenen View Controller im Griff hat. Sie können es entweder nicht zum Array der Ansichtssteuerungen in der Registerkartenleiste hinzufügen oder nicht modal darstellen.
Apple erwartet von Ihnen, dass Sie die Elemente der Benutzeroberfläche auf bestimmte Weise behandeln. Dies ist wahrscheinlich irgendwo in den Human Interface Guidelines als "Tu das nicht, weil wir nicht erwarten, dass du das jemals tun willst" vergraben.
quelle
Ich habe das gleiche Problem. Ich versuche, den View Controller direkt nach dem Entlassen zu präsentieren.
Wenn ich versuche, es ohne Animation zu machen, funktioniert es perfekt, so dass das Problem darin besteht, dass der Controller noch am Leben ist. Ich denke, dass die beste Lösung
dismissViewControllerAnimated:completion:
für iOS5 istquelle
In meinem Fall habe ich versucht, den viewController (ich habe die Referenz des viewController im TabBarViewController) von verschiedenen View-Controllern zu präsentieren, und er stürzte mit der obigen Meldung ab. In diesem Fall können Sie verwenden, um Präsentationen zu vermeiden
Könnte jemandem helfen.
quelle
Ich hatte das gleiche Problem. Ich löse es. Sie können diesen Code ausprobieren:
quelle
Der gleiche Problemfehler ist mir passiert, als ich versucht habe,
present
einen untergeordneten Ansichtscontroller anstelle seinesUINavigationViewController
übergeordneten zu verwendenquelle
Einfach entfernen
und behalten
quelle
Anstatt zu verwenden:
Sie können verwenden:
quelle