2010-04-17 5 views
8

Quindi ho un popover con un pulsante. Quando viene premuto quel pulsante, voglio che il popover scompaia. Sembra abbastanza facile, ma non riesco a capirlo per la vita di me. Il codice che uso per mostrare la popover è inferiore:Respingere l'iPad UIPopoverController dal suo controller di contenuti

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]; 

All'interno del addcategoryviewcontroller, ho:

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

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

RootViewController è dove il popover è stato creato da. Sfortunatamente, nessuno di questi metodi funziona per respingerlo. qualsiasi aiuto?

risposta

4

Si vedrà un avviso su questa linea.

aPopover.delegate = self; 

e se si desidera eseguire il codice. L'app si arresterebbe in modo anomalo. Invece devi farlo come this.

+0

Nota che la mela scoraggia usando un pulsante per chiudere semplicemente un popover. – ekinnear

2

devo

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

e non vedo perché questo non avrebbe funzionato nel tuo caso.

Il tuo if è un po 'inquietante, quindi la mia ipotesi è che tu non stia parlando alla vista che pensi di essere. rootViewController.addCategoryPopover è probabilmente nullo, perché hai creato un nuovo controller.

+0

ho fatto che "if" praticamente per disperazione come niente stava lavorando per me. A un certo punto ho provato a provare [rootViewController.addCategoryPopover dismissPopoverAnimated: YES]; come codice in quella funzione. Questo, tuttavia, non funzionava neanche. – joshholat

+0

Non hai risposto alla mia domanda implicita: qual è il valore di rootViewController.addCategoryPopover? –

0

uso NSNotificationCenter Per DissmissPoperController Fro Padre viewControll

+0

ParentViewController not FatherViewController. Si può anche usare blocco o delegato o KVO o qualsiasi altra cosa desideri. – Vive

Problemi correlati