Pergunta

Então, eu tenho um popo com um botão. Quando esse botão é pressionado, quero que a popover desapareça. Parece fácil o suficiente, mas não consigo descobrir isso para a minha vida. O código que eu uso para mostrar a popover está abaixo:

    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 do addCategoryViewController, eu tenho:

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

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

RootViewController é de onde o popover está sendo criado. Infelizmente, nenhum desses métodos trabalha para descartá -lo. qualquer ajuda?

Foi útil?

Solução

Você estaria vendo um aviso nessa linha.

 aPopover.delegate = self;

E se você executar seu código. O aplicativo faria. Em vez disso, você precisa fazer isso como isto.

Outras dicas

Eu tenho

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

E não vejo por que isso não funcionaria no seu caso.

Sua if é um pouco preocupante, então meu palpite é que você não está falando com a visão que pensa que é. rootViewController.addCategoryPopover é provavelmente nulo, porque você fez um novo controlador.

Eu acho que respondi apenas uma pergunta semelhante com a solução que usei para descartar um popover com um UIView carregado de um MKMapView. O uso da minha solução é basicamente o mesmo que para qualquer outra visualização carregando um popover.

Dê uma olhada em:Como demitir -se o popa -de -execuções no iPad com o UipopoverController no MKMapView (SDK3.2). Espero que isso resolva seu problema.

Use nsnotificationCenter para desmismisspopercontroller do pai viewcontroll

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top