【问题标题】:UIPopOverController inside UISplitViewControllerUISplitViewController 内的 UIPopOverController
【发布时间】: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 stackoverflow.com/questions/2190227/…
  • 我已经启用了 NSZombie 但没有日志:/
  • 你也在泄漏内存。您应该释放所有设置、导航和 popOver。
  • 我正在使用 ARC 并已解决

标签: cocoa-touch uisplitviewcontroller uipopovercontroller


【解决方案1】:

(可能与Error using UIPopoverController 重复。)

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2016-02-13
      • 2014-10-24
      相关资源
      最近更新 更多