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

时间:2010-06-11 23:31:38

标签: iphone ipad uipopovercontroller

在我的通用二进制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代码中,所以我实际上可以运行我的代码?

1 个答案:

答案 0 :(得分:3)

啊,啊,没关系。查看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];
}