5

ユーザーが iPad の UIsplitView で横表示から縦表示に切り替えるたびに、ポップオーバー ビューが表示されるようにしたいと考えています。ユーザーはバーボタンをクリックして表示することができますが、ポートレートモードではこれを自動化したいと考えています。

4

3 に答える 3

4

" -(BOOL) shouldAutorotateToInterfaceOrientation" メソッド内で、デバイスの向きを確認します。縦向きの場合は、ユーザーがバー ボタンをクリックしたときに表示されるように、ポップオーバーを提示します。

ではごきげんよう。

于 2010-09-27T12:52:03.623 に答える
2

UISplitViewController は、デリゲート (UISplitViewControllerDelegate) にメッセージを送信します。このデリゲート メソッドを実装して、ポップオーバーを表示できます。「詳細コントローラー」コードで次のようなことができます。

#pragma mark -
#pragma mark UISplitViewControllerDelegate implementation
- (void)splitViewController:(UISplitViewController*)svc 
     willHideViewController:(UIViewController *)aViewController 
          withBarButtonItem:(UIBarButtonItem*)barButtonItem 
       forPopoverController:(UIPopoverController*)pc
{  
    [barButtonItem setTitle:@"Your 'popover button' title"];
    self.navigationItem.leftBarButtonItem = barButtonItem;
}


- (void)splitViewController:(UISplitViewController*)svc 
     willShowViewController:(UIViewController *)aViewController 
  invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    self.navigationItem.leftBarButtonItem = nil;
}
于 2011-02-25T17:33:13.060 に答える
1

受け入れられた答え(を使用shouldAutorotateToInterfaceOrientation)は私にはうまくいきません。ローテーション アーティファクトがある (4.2 および 5.0 iPad シミュレーター) か、起動時にのみ表示され、その後のローテーションでは表示されません (4.3 シミュレーター)。代わりに、小さなヘルパー関数を作成しました。

- (void)showPopoverInPortrait {
    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
        [self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
                                             permittedArrowDirections:UIPopoverArrowDirectionAny 
                                                             animated:YES];
    }
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientationこれを内部で呼び出し- (void)viewDidLoad、起動時にも処理します。

于 2011-12-02T08:55:18.467 に答える