1

在我的通用二进制 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 代码隔离,以便我可以实际运行我的代码有什么建议?

4

1 回答 1

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];
}
于 2010-06-12T01:26:34.600 回答