2010-06-11 2 views
1

Dans une application iPhone/iPad binaire universelle, les utilisateurs peuvent ajuster les préférences dans un contrôleur de vue présenté de manière modale. Sur l'iPhone, le panneau des paramètres est présenté avec presentModalViewController: animé:, et sur l'iPad, j'utilise un UIPopoverController.Erreur "Symbole non trouvé" pour UIPopoverController dans une application universelle iPhone/iPad

Je passe mon temps à isoler complètement le code UIPopoverController du code de l'iPhone. Chaque fois que je compile pour l'iPhone, je reçois l'erreur suivante:

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 

Ceci est bien sûr parce que UIKit sur l'iPhone ne dispose pas d'une classe UIPopoverController. Est-ce que quelqu'un a des conseils sur la façon d'isoler efficacement l'API iPad comprend du code de l'iPhone, donc je peux réellement exécuter mon code?

+0

J'ai eu le même problème, ceci est mon message et résolu mon problème. http://stackoverflow.com/questions/3001374/symbol-not-found-objc-class-uipopovercontroller Cordialement,
Paul –

+0

Vous pouvez également [lien vers UIKit] (http://stackoverflow.com/questions/ 2627797/iphone-dev-weak-link-framework). – kennytm

+0

Ne pas lier faiblement UIKit. Ce n'est pas nécessaire et cela peut être dangereux. Voir ma réponse ici: http://bit.ly/ntqo0y – AWrightIV

Répondre

3

Ahhhh, ça ne bouge pas. Consultez l'exemple d'application Apple "TopPaid"

C'est un peu hacky, mais ça marche. Souhait il y avait une solution plus élégante ...

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]; 
} 
+0

J'avais le même problème ci-dessus. Lorsque j'exécute mon application universelle sur iPhone, elle se bloque même si je vérifie "UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad" avant d'instancier le Popover. Je l'ai résolu avec ça. Merci d'avoir répondu. – ravinsp

+0

C'est en fait la solution la moins hacky disponible en ce moment. Voir aussi: http://bit.ly/ntqo0y – AWrightIV

Questions connexes