如何在 DidSelectRow 中关闭 UIPopover?
Posted
技术标签:
【中文标题】如何在 DidSelectRow 中关闭 UIPopover?【英文标题】:How To Dismiss UIPopover At DidSelectRow? 【发布时间】:2011-08-22 21:33:14 【问题描述】:我有这个代码来展示一个弹出框:
- (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];
现在,当在 FavoritesViewController
中调用 didSelectRow
时,我希望解除弹出框。我试过[self dismissPopoverAnimated: YES];
,但无法识别。
【问题讨论】:
也许你应该从这个函数返回booksmarksPopover
?另外,您在哪里/如何展示弹出框?
那是一个错字,现在更正了。我通过 UIBarButtonItem 展示这个,添加了更多代码。
【参考方案1】:
您需要在您的FavoritesViewController 中获取对popoverController 的引用。在 FavoritesViewController 中设置一个 popoverController 属性,然后您应该可以在 didSelectRow
方法中将其关闭。
【讨论】:
我添加了@property (nonatomic, retain) UIPopoverController *popoverController;
并添加了[self.popoverController dismissPopoverAnimated:YES];
,但仍然没有关闭。
在您的 favoritesPopover 方法中,您没有设置该属性。试试 fvc.popoverController = favoritesPopover;
在您第一次使用 (favoritesPopover) 提出问题的方法中。在那个方法中,在你初始化 favoritesPopover = [[UIPopoverController alloc] initWithContentViewController:navController]; 之后,放置 fvc.popoverController = favoritesPopover;。您还必须移动 [fvc release];在它下面。
谢谢,成功了。此外,当 UISPlitViewControler 处于弹出模式时,从主视图中选择一行时也会出现同样的问题。不是应该自动解散吗?我怎样才能在那里修复它?以上是关于如何在 DidSelectRow 中关闭 UIPopover?的主要内容,如果未能解决你的问题,请参考以下文章