2011-08-22 52 views
1

我有這樣的代碼來呈現酥料餅:如何關閉在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

回答

2

您需要在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