UISplitViewController 内的 UIPopOverController

Posted

技术标签:

【中文标题】UISplitViewController 内的 UIPopOverController【英文标题】:UIPopOverController inside UISplitViewController 【发布时间】:2011-12-24 17:58:03 【问题描述】:

我必须在一个 splitController 的左侧显示一个 popOver,我用一个 navigationController 初始化 popOver。但是当我显示 popOver 时,我的应用程序崩溃了。

Impostazioni *settings = [[Impostazioni alloc] initWithStyle:UITableViewStyleGrouped];
settings.title = NSLocalizedString(@"SETTINGS", nil);
settings.contentSizeForViewInPopover = kContentSizeOfPopOver;
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:settings];
nav.navigationBar.tintColor = kTintColorNavigationBar;
nav.contentSizeForViewInPopover = kContentSizeOfPopOver;
UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:nav];
[popOver presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

这是我的代码。有什么想法吗?

编辑:即使我只设置了一个 viewController 而不是 SplitController 也会崩溃:/ 并且使用空的 ViewController :/

【问题讨论】:

你能发布崩溃日志吗,也许是 NSZombieEnabled ***.com/questions/2190227/… 我已经启用了 NSZombie 但没有日志:/ 你也在泄漏内存。您应该释放所有设置、导航和 popOver。 我正在使用 ARC 并已解决 【参考方案1】:

(可能与Error using UIPopoverController 重复。)

简而言之,您需要以某种方式保留UIPopoverController。通过为其定义属性或手动管理引用计数。使用 ARC,后者不是一个选项,因此您需要存储引用。

【讨论】:

【参考方案2】:

我相信你需要一个实例变量来保存 popoverController。否则,在包含您显示的代码的方法完成后,将不会保留您的弹出框。与您将子视图添加到视图然后该视图将保留子视图不同。弹出框不会发生同样的事情。

【讨论】:

以上是关于UISplitViewController 内的 UIPopOverController的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController 没有正确旋转

UISplitViewController 中两个视图控制器之间的通信

UISplitViewController - 双列样式不起作用

UISplitViewController 一致分隔符

UISplitViewController - 并排或纵向叠加

在 UIViewControllers 和 UISplitViewController 之间导航 [关闭]