2012-01-19 14 views
0

UISplitViewControllerDelegateは、UISplitViewControllerが横向きに回転したときにUIBarButtonItemUIPopoverControllerを受け取っています。以下の委譲メソッドが実装されます。UISplitViewController:BarButtonItemをタップしたときに他のポップオーバーを解除するにはどうすればいいですか?

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

myViewControllerは、それがビューのナビゲーションバーにleftBarButtonItemに置かれbarButtonItemを設定した場合。 私の問題は、のleftBarButtonItemがタップされているときに、myViewControllerに別のポップオーバーがあり、これを解除する必要があるということです。他のポップオーバーを解除することは問題ではありませんが、barButtonItemをクリックするとわかりません。

どうすればこの問題を解決できますか?

答えて

0

IはsplitViewController:popoverController:willPresentViewController:方法を使用して解決策を見つけました。

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

myViewControllerdismissPopovers方法は、それらが提示されている場合popoversを隠すために実装されています。

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

+0

申し訳ありませんが、知っている限り、* passThroughViews *プロパティは、そのプロパティで指定されたビューをタップすると、* UIPopOverController *がポップオーバーを解除しないようにします。たぶん私は十分にはっきりしていないかもしれませんが、* splitViewController *から提供された* barButtonItem *がタップされたときに、2回目のポップオーバーを解除する必要があります。 – dhrm

+0

いつバーボタンがクリックされたかを知りたい。これを追加するとポップオーバーが表示されるにもかかわらず、バーボタンのセレクタが起動します。私はあなたがそこからそれを取ることができると思います。 – sElanthiraiyan

+0

しかし、* barButtonItem *のセレクタによってどのメソッドが呼び出されますか?ボタンはsplitViewController(私が知る限り)によって生成され、 'splitViewController:willHideViewController:withBarButtonItem:forPopoverController:'メソッドで私のために処理されます。 – dhrm

関連する問題