UIViewControllerHierarchyInconsistency
Je suis en train de construire mon appli et à un moment j'ai pousser un UIViewController et puis j'ai cette erreur. Je ne suis pas sûr de savoir exactement pourquoi.
'UIViewControllerHierarchyInconsistency', la raison: "Une vue ne peut être
associé avec au plus une-vue-contrôleur à la fois! View > est associé . Désactivez cette association avant de l'associer ce point de vue avec
.'
PageViewController *viewController;
viewController = [[PageViewController alloc] initWithManagedObjectContext:managedObjectContext];
dataSource = [[PagesDataSource alloc] initWithManagedObjectContext:managedObjectContext];
PVPage *selectedPage = [[dataSource pages] objectAtIndex:itemIndex];
[viewController setRepresentedPage:selectedPage];
PageFlipperAppDelegate *appDelegate = (PageFlipperAppDelegate *)[[UIApplication sharedApplication] delegate];
[(UINavigationController *)[[appDelegate window] rootViewController] setToolbarHidden:YES animated:YES];
[(UINavigationController *)[[appDelegate window] rootViewController] pushViewController:viewController animated:YES];
Dans mon pageViewController...................
- (id)initWithManagedObjectContext:(NSManagedObjectContext *)initManagedObjectContext
{
if ((self = [super initWithNibName:@"PageView" bundle:nil]))
{
[self setManagedObjectContext:initManagedObjectContext];
dataSource = [[PagesDataSource alloc] initWithManagedObjectContext:[self managedObjectContext]];
}
return self;
}
OriginalL'auteur BDGapps | 2012-08-09
Vous devez vous connecter pour publier un commentaire.
J'ai eu la même erreur survient quand j'ai voulu l'un des paramètres de défilement de la vue apparaissent dans une liste.
Voici mon code d'origine avec des commentaires sur ce que j'ai changé pour le résoudre:
La ligne
popoverContent.view = settingsViewController.view
est ce qui a provoqué le crash (sans elle, ma liste était vide bien sûr). Du point de vue de la UIViewControllerHierarchyInconsistency erreur, il est logique que je ne devrais pas avoir été réaffectation des il et puis l'ajouter à un autre point de vue contrôleur.Dans votre cas, je suppose quelque chose de semblable se passe dans pushViewController ou ailleurs dans votre code. Pourrait-il être le cas?
Merci j'ai fait quelque chose comme ça.
Upvote pour owenfi. Incident se produit dans DP4, mais aussi dans 6b4. J'ai remarqué un crash dans une application qui n'était pas là quand j'ai construit à l'origine en DP3, b3. Donc compilation avec DP3 était très bien. L'exécution de mon dp3 code compilé dans beta4 est de s'écraser.
J'ai le même problème que @owenfi. Je ne suis pas sûr que la réponse décrit réellement quoi faire. Il doit y avoir une manière plus générale de la solution et d'explication pour cela. Toutes les suggestions?
Mon étape par étape de débogage approche était de commenter les lignes où j'ai affecté la vue-contrôleur et adopté le point de vue et ensuite de le reconstruire dans une meilleure façon (voir ci-dessus). Je suis d'accord c'est pas un très généralement applicables explication. Je n'ai pas vu un parallèle exact dans le code d'origine, donc peut-être que la solution était dans les lignes apparaît pas, peut-être, vous pouvez poster les vôtres, dans une autre question si elle est sensiblement différente?
OriginalL'auteur owenfi
Gotcha scénario: Si vous avez deux UIViewControllers dans le même .XIB fichier avec des prises de vue pointant vers le même point de vue, vous augmentez l'UIViewControllerHierarchyInconsistency exception lorsque la plume est chargé, tels que par l'appel de la .propriété vue sur l'un des contrôleurs.
UITableViewController
avec unUITableView
comme une sous-vue, mais le XIB du propriétaire du fichier de classe était unUITableViewController
sous-classe, alors j'ai enlevé leUITableViewController
de la XIB et juste à gauche de laUITableView
un plaisir de vous aider 🙂 j'ai pensé que je devrais poster quelque chose après avoir passé 1/2 heure à essayer de comprendre, avec pas utile de sortie du débogueur...
J'ai eu une MainWindow.xib avec un TabBarController, avec 4 incorporé NavigationControllers avec TableViewControllers qui serait charger de séparer les Plumes qui ont un TableViewController avec un TableView. Retrait de la TableViewController de la XIBs, laissant la TableView et ayant le Propriétaire du Fichier point à la classe personnalisée résolu pour moi.
J'ai le même problème stackoverflow.com/questions/12909275 . . mon projet n'ont pas viewcontroller dans XIB, tout dans le code
OriginalL'auteur Matt Mc
Juste pour ajouter à Matt et owenfi réponses, en général les lignes (ou au moins ce que j'ai vu jusqu'à présent) ce qui se passe lorsque vous créez une coutume XIB pour un
UIViewController
et dans Interface Builder vous ajoutez à la fois une Vue et d'un Contrôleur de Vue où votre point de vue de l'objet est une sous-vue de votre Vue-Contrôleur.Cela provoque l'affichage de sortie à régler à la fois à la
UIViewController
vous avez de l'IB et à la classe définie comme le propriétaire du fichier, donc leUIViewControllerHierarchyInconsistency
exception.Voir cette réponse pour quelques captures d'écran pour expliquer le problème.
OriginalL'auteur jere
J'ai eu le même problème pour la liste des commandes après la migration vers iOS 6. Cependant, mon implémentation légèrement différente de celle réponses ici. Donc, je voudrais partager ma solution:
J'ai vue dans le xib, mais il est montré dans un endroit différent avec différentes données sur l'écran dans une fenêtre de vue. Quand j'ai montrer le point de vue, j'ai créer un UIViewController et affecter mon point de vue en tant que contrôleur de vue. Il fonctionne dans le premier temps, mais lorsque j'essaie de montrer deuxième temps, il se bloque avec UIViewControllerHierarchyInconsistency. Donc, j'ai défini un mondial UIViewController une fois comme on le voit dans le code ci-dessous.
S'écraser:
Fixe:
+1
Cette réponse m'a sauvé beaucoup de temps. Merci pour la super solution de contournement.Réponse Impressionnante... Beau Travail...
OriginalL'auteur Topsakal
Cette erreur se produit également si vous ne suivez pas ces consignes: La Création De Contenu Personnalisé En Vue De Contrôleurs
Fondamentalement, vous devez appeler:
si vous avez
Cette erreur peut souvent être couplé avec quelque chose à propos de "active-vue-contrôleur"
OriginalL'auteur whyoz
L'un de la raison pour laquelle je coince, c'est que j'ai copié le
ViewController
à partir d'unstoryboard
à unxib
chargement d'un fichier par programmation pour mon besoin. Mais dans un xib je devrais vraiment copie pas les vues de l'ensemble de la vue-contrôleur. Et de définir lafile owner
à mon custom-vue-contrôleur. Qui résout mon semblable problème d'erreur.OriginalL'auteur karim