【问题标题】:"Symbol not found" error for UIPopoverController in an iPhone/iPad Universal AppiPhone/iPad 通用应用程序中 UIPopoverController 的“未找到符号”错误
【发布时间】:2010-06-11 23:31:38
【问题描述】:

在我的通用二进制 iPhone/iPad 应用程序中,用户可以在模态显示的视图控制器中调整首选项。 在 iPhone 上,设置面板显示为 presentModalViewController:animated:,而在 iPad 上,我使用 UIPopoverController。

我有一段时间将 UIPopoverController 代码与 iPhone 代码完全隔离开来。每次为 iPhone 编译时,都会出现以下错误:

dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverController
  Referenced from: /var/mobile/Applications/CBB37F87-AA6D-47E2-823A-E259E3268A32/MyApp debug.app/MyApp
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

这当然是因为 iPhone 上的 UIKit 没有 UIPopoverController 类。有没有人建议如何有效地将 iPad API 包含与 iPhone 代码隔离,以便我可以实际运行我的代码?

【问题讨论】:

标签: iphone ipad uipopovercontroller


【解决方案1】:

啊,没关系。查看 Apple 的示例应用“TopPaid”

这有点 hacky,但它确实有效。希望有一个更优雅的解决方案...

Class cls = NSClassFromString(@"UIPopoverController");
if (cls != nil)
{
    UIPopoverController *aPopoverController =
        [[cls alloc] initWithContentViewController:self.masterViewController];
    self.popoverController = aPopoverController;

    [aPopoverController release];

    [popoverController presentPopoverFromBarButtonItem:barButtonItem
                              permittedArrowDirections:UIPopoverArrowDirectionUp
                                              animated:YES];
}

【讨论】:

  • 我遇到了同样的问题。当我在 iPhone 上运行我的通用应用程序时,即使我在实例化 Popover 之前检查了“UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad”,它也会崩溃。我用这个解决了它。感谢您的回答。
  • 这实际上是目前可用的最简单的解决方案。另见:bit.ly/ntqo0y
猜你喜欢
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多