Que signifie cette erreur indique:
"Popovers ne peut être présenté à partir d'un point de vue qui n'ont pas de fenêtre."
Que signifie cette erreur indique:
"Popovers ne peut être présenté à partir d'un point de vue qui n'ont pas de fenêtre."
la chose qui m'a sauvé la vie:
if (self.view.window != nil)
[popoverController presentPopoverFromRect:CGRectMake(44, yCoord, 111, 111) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
en ajoutant si la condition il ne crash plus. Je n'ai pas vraiment l'obtenir parce que le presentPopoverFromRect fonction est TOUJOURS appelé. Il n'y a pas de situation où la fenêtre est nul mais de toute façon il a fait le tour. Je suppose que c'est plus sur l'actualisation de la référence à la fenêtre ou quelque chose comme ça..
edit: j'ai cela en viewDidAppear mais sans la condition si elle a parfois été s'écraser. Dans la plupart des cas, il suffit de déplacer presentPopoverFromRect à viewDidAppear ou didMoveToWindow mais dans mon cas, pour une raison quelconque, le si nécessaire.
J'ai eu ce problème.
J'ai eu un UITabBarController que la vue de détail, et j'ai mis le barButtonItem comme le leftBarButtonItem sur les trois manettes de navigation dans la barre d'onglet.
vcChart.navigationItem.leftBarButtonItem = barButtonItem;
vcAnalysis.navigationItem.leftBarButtonItem = barButtonItem;
vcTechnicals.navigationItem.leftBarButtonItem = barButtonItem;
S'avère que le dernier ajout est valide, et au cours des deux serait jeter l'exception gemmage.
Pour le fixer, j'ai seulement mis la leftBarButtonItem pour le visible-vue-contrôleur, et tout juste de passer la barButtonItem à la vue visible contrôleur à chaque fois que l'utilisateur a basculé onglets.
Il existe de nombreuses façons d'obtenir cette erreur. Fondamentalement, vous avez besoin d'attendre pour appeler l' presentPopover
de commande jusqu'à ce que votre appel vue est ajouté à la fenêtre. J'ai fait de cette façon.
- (void)viewDidAppear:(BOOL)animated
{
[self methodThatDisplaysPopOver];
}
Mon presentPopoverFromRect
appel est à l'intérieur de mon methodThatDisplaysPopOver
fonction.
Vous pouvez protéger tous les presentPopover appel comme MobiMaciek suggère avec cette.
if (self.view.window != nil)
[popoverController presentPopoverFromRect:CGRectMake(10, 10, 100, 100) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
Cependant, je pense qu'il serait mieux de comprendre que lorsque l'auto.vue.la fenêtre est affectée et assurez-vous de vous présenter la liste après le point de vue a une fenêtre.
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.