UISplitViewController:如何在点击BarButtonItem时关闭其他弹出窗口?

时间:2012-01-19 09:40:40

标签: objective-c cocoa-touch ipad uisplitviewcontroller

我有一个UISplitViewControllerDelegate,当UISplitViewController旋转到横向时,它正在接收UIBarButtonItemUIPopoverController。实现了以下委托方法:

- (void)splitViewController:(UISplitViewController *)svc
     willHideViewController:(UIViewController *)aViewController
          withBarButtonItem:(UIBarButtonItem *)barButtonItem
       forPopoverController:(UIPopoverController *)pc
{
    barButtonItem.title = self.title;
    myViewController.splitViewBarButtonItem = barButtonItem;
    myViewController.splitViewPopoverController = pc;
}

myViewController 设置 barButtonItem 时,它将被放置在视图导航栏中的 leftBarButtonItem 中。 我的问题是,当点击 leftBarButtonItem 时,myViewController有另一个popover,应该被解雇。解雇其他popover不是问题,但问题是,当我点击 barButtonItem 时,我不知道。

我该如何做到这一点?

2 个答案:

答案 0 :(得分:0)

将栏按钮项添加到UIPopOverController的passThroughViews属性中。

yourPopOverController.passThroughViews = [NSArray arrayWithObject:yourBarButton];

这样就可以了。您可以向此阵列添加多个视图。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIPopoverController_class/Reference/Reference.html#//apple_ref/occ/instp/UIPopoverController/passthroughViews

答案 1 :(得分:0)

我找到了使用splitViewController:popoverController:willPresentViewController:方法的解决方案。

- (void)splitViewController:(UISplitViewController *)svc
          popoverController:(UIPopoverController *)pc
  willPresentViewController:(UIViewController *)aViewController {
    [myViewController dismissPopovers];
}

myViewController 中的dismissPopovers方法用于隐藏弹出窗口,如果它们被显示。