1

内部に UIView を表示するだけのポップオーバーを使用しています。ただし、ポップアップは表示されますが、空のビュー (ある種の濃い青で色付けされています) しか含まれていません。UIViewController が使用されるのは、そこにある「PreferencesController」です。

ポップアップを開くための私のコードは次のとおりです。

- (IBAction)showPopup:(id)sender {

if (_preferencesController == nil) {
    self.preferencesController = [[PreferencesController alloc]init];
    self.preferencesControllerPopover = [[UIPopoverController alloc] 
                                initWithContentViewController:_preferencesController];
}
[self.preferencesControllerPopover presentPopoverFromBarButtonItem:sender 
                                permittedArrowDirections:0 animated:YES];
}

それに加えて、「」以外の特別なメソッドを含まない「 preferencesController 」しかありませんviewDidLoadself.contentSizeForViewInPopover = CGSizeMake(800.0, 800.0);

これは私が得るものです: 現れる

適切に機能しない理由はありますか?

4

2 に答える 2

2

考えられる問題

800.0 の幅は、ポップオーバーが処理するには大きすぎます。


UIViewControllerのドキュメント:

(議論中contentSizeForViewInPopover

このプロパティには、ビュー コントローラーがポップオーバーに表示されるときに必要なサイズが含まれます。デフォルトでは、幅は 320 ポイント、高さは 1100 ポイントに設定されています。これらの値は、必要に応じて変更できます。

ポップオーバーの推奨幅は 320 ポイントです。必要に応じて、600 ポイントの幅の値を返すことができますが、これはお勧めしません。


考えられる解決策

presentModalViewController:animated:モーダル ビュー コントローラーを上でアニメーション化する UIViewController から呼び出して、UIViewController をモーダルに提示してみてください。

于 2012-07-25T18:11:29.707 に答える
0

このコードが問題を引き起こしていると思います:

[self.preferencesControllerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:0 animated:YES];

送信者は id 型であるため、次のようにキャストする必要があります。

UIBarButtonItem *but = (UIBarButtonItem *)sender;
 [self.preferencesControllerPopover presentPopoverFromBarButtonItem:but permittedArrowDirections:0 animated:YES];

問題が解決することを願っています。

于 2012-07-25T18:33:01.193 に答える