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」をご覧ください

ちょっとハックですが、うまくいきます。もっとエレガントな解決策があればいいのに...

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 に答える