iPhone/iPad 通用应用程序中 UIPopoverController 的“未找到符号”错误

Posted

技术标签:

【中文标题】iPhone/iPad 通用应用程序中 UIPopoverController 的“未找到符号”错误【英文标题】:"Symbol not found" error for UIPopoverController in an iPhone/iPad Universal App 【发布时间】: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 代码隔离,以便我可以实际运行我的代码?

【问题讨论】:

你也可以weak link to UIKit。 我遇到了同样的问题,这是我的帖子并解决了我的问题。 ***.com/questions/3001374/… 问候,保罗 不要弱链接 UIKit。这不是必需的,而且可能是有害的。在这里查看我的答案:bit.ly/ntqo0y 【参考方案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

以上是关于iPhone/iPad 通用应用程序中 UIPopoverController 的“未找到符号”错误的主要内容,如果未能解决你的问题,请参考以下文章

iphone, ipad, 通用应用设计, 基于拆分视图

iPhone / iPad 通用应用程序方向

如何在单独的类中创建通用 Iphone/Ipad 应用程序?

如何为通用 iPhone/iPad 应用程序指定图标?

对通用 OpenGL ES 应用程序(iPhone 和 iPad)的建议?

如何制作以编程方式使用 UISplitViewController 和 UINavigationController 的通用 iPhone / iPad 应用程序?