我正在使用一个popover,它应该只显示一个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 ”除viewDidLoad
以及“self.contentSizeForViewInPopover = CGSizeMake(800.0, 800.0);
”之外不包含任何特殊方法
这就是我得到的:
为什么它不能正常工作?
答案 0 :(得分:2)
800.0宽度对于Popover来说太大了。
在documentation for UIViewController:
(讨论contentSizeForViewInPopover
)
此属性包含视图控制器在弹出窗口中显示时所需的大小。默认情况下,宽度设置为320磅,高度设置为1100磅。您可以根据需要更改这些值。
弹出窗口的建议宽度为320磅。如果需要,您可以返回宽度值大至600点,但不建议这样做。
尝试通过调用UIViewController中的presentModalViewController:animated:
来模态地呈现你的UIViewController,你希望模态视图控制器在其上面进行动画处理。
答案 1 :(得分:0)
我认为此代码会产生问题:
[self.preferencesControllerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:0 animated:YES];
因为发件人的类型为id,所以你需要投射它,如:
UIBarButtonItem *but = (UIBarButtonItem *)sender;
[self.preferencesControllerPopover presentPopoverFromBarButtonItem:but permittedArrowDirections:0 animated:YES];
希望它能解决问题。