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 应用程序?
对通用 OpenGL ES 应用程序(iPhone 和 iPad)的建议?
如何制作以编程方式使用 UISplitViewController 和 UINavigationController 的通用 iPhone / iPad 应用程序?