UIPopover 内部不显示视图
Posted
技术标签:
【中文标题】UIPopover 内部不显示视图【英文标题】:UIPopover Not Showing View Inside 【发布时间】:2012-07-25 17:56:23 【问题描述】:我正在使用一个弹出框,它应该只是在里面显示一个 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);
”之外不包含任何特殊方法
这是我得到的:
任何想法为什么它不能正常工作?
【问题讨论】:
当弹出框显示时,弹出框箭头是否正确显示(它出现并且指向正确的 barbuttonitem)? @PedroCattori:当我们像permittedArrowDirections:0
这样写时,弹出框将没有箭头。
在这种情况下,临时设置 permittedArrowDirection
可能对调试有用,因为您将能够看到箭头是否指向 barbuttonitem,因此如果错误来自无效barbuttonitem 参数与否。 (我假设 barbuttonitem 仅用于定位弹出框并绘制其箭头。不是这样吗?)
实际上我首先激活了 allowedArrowDirection,它正确指向了 barbuttonitem。我只是使用 :0 来获得更好的外观。我也先有一个较小的尺寸,但它也不起作用。我只是将大小增加到 800.0,因为我使用 Storyboard 创建了一个 UIIVewController 以在其上创建两个标签。但我还将 UIViewController 与我的 PreferencesController 链接在一起,它是一个 UIViewController。所以这也不是问题......:/
我刚刚添加了显示的弹出窗口的图片,也许这会给您一些提示问题可能出在哪里。
【参考方案1】:
可能的问题
800.0 宽度太大,Popover 无法处理。
在documentation for UIViewController:
(讨论contentSizeForViewInPopover
)
此属性包含视图控制器在弹出窗口中显示时所需的大小。默认情况下,宽度设置为 320 点,高度设置为 1100 点。您可以根据需要更改这些值。
弹出框的推荐宽度为 320 磅。如果需要,您可以返回一个宽度值最大为 600 磅,但不建议这样做。
可能的解决方案
尝试通过从 UIViewController 调用 presentModalViewController:animated:
以模态方式呈现您的 UIViewController,您希望模态视图控制器在其上进行动画处理。
【讨论】:
【参考方案2】:我认为这段代码会导致问题:
[self.preferencesControllerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:0 animated:YES];
因为sender是id类型,所以需要强制转换,Like:
UIBarButtonItem *but = (UIBarButtonItem *)sender;
[self.preferencesControllerPopover presentPopoverFromBarButtonItem:but permittedArrowDirections:0 animated:YES];
希望它能解决问题。
【讨论】:
不幸的是这并没有改变任何东西以上是关于UIPopover 内部不显示视图的主要内容,如果未能解决你的问题,请参考以下文章