Demorando o iPad UipopoverController de dentro de seu controlador de conteúdo
-
27-09-2019 - |
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?
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