2010-04-17 13 views
8

Also habe ich ein Popover mit einer Schaltfläche drin. Wenn diese Taste gedrückt wird, möchte ich, dass das Popover verschwindet. Es scheint einfach zu sein, aber ich kann es nicht für mein Leben herausfinden. Der Code Ich benutze den popover zeigen unter:iPad UIPopoverController aus dem Content Controller entfernen

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

Im addcategoryviewcontroller, ich habe:

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

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

RootViewController ist, wo die popover von erstellt wird. Leider funktioniert keine dieser Methoden, um sie zu verwerfen. irgendeine Hilfe?

Antwort

4

Sie würden in dieser Zeile eine Warnung sehen.

aPopover.delegate = self; 

und wenn Sie Ihren Code ausführen würden. Die App würde abstürzen. Stattdessen müssen Sie es wie this tun.

+0

Beachten Sie, dass der Einsatz einer Schaltfläche zum Schließen eines Pop-ups von Apple abgeraten wird. – ekinnear

2

Ich habe

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

und sehe nicht, warum dies nicht in Ihrem Fall funktionieren würde.

Ihre if ist ein bisschen beunruhigend, also meine Vermutung ist, dass Sie nicht mit der Ansicht sprechen, die Sie denken, dass Sie sind. rootViewController.addCategoryPopover ist wahrscheinlich Null, weil Sie einen neuen Controller gemacht haben.

+0

ich gemacht, dass „wenn“ Aussage so ziemlich aus Verzweiflung als nichts für mich arbeitet. Ich habe an einem Punkt einfach versucht, [rootViewController.addCategoryPopover ablehnenPopoverAnimated: YES]; als der Code in dieser Funktion. Das funktionierte jedoch auch nicht. – joshholat

+0

Sie haben meine Frage nicht angesprochen - was ist der Wert von rootViewController.addCategoryPopover? –

0

Ich glaube, ich antwortete nur eine ähnliche Frage mit der Lösung, die ich verwendet, um ein Popover mit einem UIView geladen von einem MKMapView zu entlassen. Die Verwendung meiner Lösung ist im Grunde die gleiche wie für jede andere Ansicht laden ein Popover.

Werfen Sie einen Blick auf: How to dismissPopoverAnimated on iPad with UIPopoverController in MKMapView (SDK3.2). Ich hoffe das hat dein Problem gelöst.

0

Verwendung NSNotificationCenter Um DissmissPoperController Fro Vater viewControll

+0

ParentViewController nicht PaterViewController. Man kann auch Block oder Delegate oder KVO oder was auch immer er will verwenden. – Vive

Verwandte Themen