Question

Un bug très particulier:

Je BarButtonItem qui apparaît un UIPopoverController comme ça:

-(void) addNewProjectButtonClicked:(id)sender
{
    //Some Preparations....

    [popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

Comme prévu, un contrôleur Popover apparaît au bon endroit.

Maintenant, je me attends que quand je touche PARTOUT en dehors du popover il rejeté.
Eh bien, le seul problème est que quand je frappe à nouveau le BarButton (celui qui poped le popover) au lieu de rejeter l'ancien et de présenter un nouveau comme je l'attendre, le résultat est AUTRE Popover sur de l'existant. Cela signifie que lorsque je presse encore et encore je reçois un tas de popovers qui peut être renvoyé que de multiples clics sur un autre endroit.

Je sais que je peux utiliser une boîte de Singleton Design Motif ici pour résoudre ce problème, mais n'est pas là un moyen plus facile et moyen intégré pour prendre soin?

Merci!

Était-ce utile?

La solution

je suis tombé sur le même problème il y a quelques mois, a pensé qu'il serait lui-même rejeter quand je tapais quoi que ce soit , mais ce n'est pas le cas.

La façon dont je traite est de garder une référence à l'ancien popover, et le rejeter lorsque le UIBarButtonItem est exploité.

-(void) addNewProjectButtonClicked:(id)sender
{
    [popover dismissPopoverAnimated:YES];
    // Set it up again.
    [popover ...];
}

Vous pouvez utiliser une propriété pour la gestion de la mémoire facile, ou gérer vous-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top