Ошибка «Символ не найден» для UIPopoverController в универсальном приложении для iPhone / iPad - PullRequest
1 голос
/ 12 июня 2010

В моем универсальном двоичном приложении для 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

Это, конечно, потому что UIKit на iPhone не имеет класса UIPopoverController. У кого-нибудь есть советы, как эффективно изолировать API-интерфейсы iPad от кода iPhone, чтобы я мог действительно выполнить свой код?

1 Ответ

3 голосов
/ 12 июня 2010

Аааа, неважно.Взгляните на пример приложения 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];
}
...