如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何在导航控件片段中关闭导航 DrawerLayout onBackPressed

如何在 Swift 中关闭 ViewController?

如何在android中关闭AlertDialog

你如何在android studio中关闭版本控制?

如何在android中关闭数据连接?

如何在并发操作中关闭通道?