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];
}

除此之外,我只有“ preferencesControllerviewDidLoad ”,除了“ self.contentSizeForViewInPopover = CGSizeMake(800.0, 800.0);”之外不包含任何特殊方法

这就是我得到的: 弹出

任何想法为什么它不能正常工作?

4

2 回答 2

2

可能的问题

800.0 宽度太大,Popover 无法处理。


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];

因为 sender 是 id 类型,所以你需要转换它,比如:

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

希望它能解决问题。

于 2012-07-25T18:33:01.193 回答