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 - 双列样式不起作用