2010-04-17 41 views
8

Así que tengo un popover con un botón. Cuando se presiona ese botón, quiero que el popover se vaya. Parece bastante fácil, pero no puedo entenderlo por mi vida. El código que utilizo para mostrar el popover es a continuación:Descartar iPad UIPopoverController desde dentro de su controlador de contenido

AddCategoryViewController* content = [[AddCategoryViewController alloc] init]; 
UIPopoverController* aPopover = [[UIPopoverController alloc] 
      initWithContentViewController:content]; 
aPopover.delegate = self; 
[content release]; 

// Store the popover in a custom property for later use. 
self.addCategoryPopover = aPopover; 
[aPopover release]; 
[addCategoryPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

Dentro del addcategoryviewcontroller, que tienen:

-(IBAction)saveAddCategory:(id)sender { 
if (rootViewController == nil) 
    rootViewController = [[RootViewController alloc] init]; 

[rootViewController.addCategoryPopover dismissPopoverAnimated:YES]; 
[rootViewController dismissPopover]; 
} 

RootViewController es donde se crea el popover partir. Desafortunadamente, ninguno de esos métodos funciona para descartarlo. ¿alguna ayuda?

Respuesta

4

Aparecerá una advertencia en esta línea.

aPopover.delegate = self; 

y si ejecutara su código. La aplicación se bloqueará. En su lugar, debe hacerlo como this.

+0

Tenga en cuenta que Apple desaconseja usar un botón para cerrar simplemente un popover. – ekinnear

2

que tienen

- (void)viewWillDisappear:(BOOL)anAnimated 
{ 
    [self.dPopover dismissPopoverAnimated: NO]; 
    self.dPopover = nil; 
    [super viewWillDisappear: anAnimated]; 
} 

y no veo por qué esto no funcionaría en su caso.

Su if es un poco problemático, así que supongo que no está hablando de lo que cree que es. rootViewController.addCategoryPopover es probablemente nulo, porque creó un nuevo controlador.

+0

que hizo que "if" más o menos fuera de la desesperación ya que nada estaba trabajando para mí. Lo hice en un punto solo intenté tener [rootViewController.addCategoryPopover dismissPopoverAnimated: YES]; como el código en esa función. Eso, sin embargo, tampoco funcionaba. – joshholat

+0

Usted no abordó mi pregunta implícita: ¿cuál es el valor de rootViewController.addCategoryPopover? –

0

uso NSNotificationCenter Para DissmissPoperController Fro Padre viewControll

+0

ParentViewController no FatherViewController. También se puede usar block o delegate o KVO o lo que él desee. – Vive

Cuestiones relacionadas