如何关闭在DidSelectRow上的UIPopover?

问题描述:

我有这样的代码来呈现酥料饼:如何关闭在DidSelectRow上的UIPopover?

- (UIPopoverController *)favoritesPopover 
{ 
    if (!favoritesPopover) 
    { 
     FavoritesViewController *fvc = [[FavoritesViewController alloc] init]; 
     UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:fvc]; 
     [fvc release]; 
     favoritesPopover = [[UIPopoverController alloc] initWithContentViewController:navController]; 
     [navController release]; 
     favoritesPopover.delegate = self; 
    } 
    return favoritesPopover; 
} 

- (IBAction)toggleFavorites:(id)sender 
{ 
    if (!self.favoritesPopover.popoverVisible) 
     [self.favoritesPopoverpresentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
    else 
     [self.favoritesPopover dismissPopoverAnimated:YES]; 
} 

现在,当didSelectRow被称为FavoritesViewController,我要被开除的酥料饼。我尝试了[self dismissPopoverAnimated: YES];但这不被认可。

+0

也许你应该从这个函数返回'booksmarksPopover'?另外,你在哪里/如何展示popover? –

+0

这是一个错字,现在修复。我通过一个UIBarButtonItem呈现这个,增加了更多的代码。 – Jon

您需要在FavoritesViewController中获取对popoverController的引用。在FavoritesViewController中设置一个popoverController属性,然后您应该能够在didSelectRow方法中解除它。

+0

我做过@property(nonatomic,retain)UIPopoverController * popoverController;'并添加了'[self.popoverController dismissPopoverAnimated:YES];'但仍然没有解雇。 – Jon

+0

在您的FavoritesPopover方法中,您未设置该属性。试试fvc.popoverController = favoritesPopover; – ms83

+0

在你首先用(favoritesPopover)问你的问题的方法。在该方法中,在初始化favoritesPopover = [[UIPopoverController alloc] initWithContentViewController:navController]之后,放置fvc.popoverController = favoritesPopover ;.您还必须移动[fvc release];在它下面。 – ms83