2010-08-06 10 views
2

Je construis une application universelle qui utilise un contrôleur UISplitViewController pour l'iPad, et devrait fonctionner sur n'importe quel appareil 3.0 tel qu'un iPhone/iPod touch de première génération. Le problème est que, malgré le fait que je ne suis pas en fait de créer des instances de UISplitViewController alors que l'application est en cours d'exécution sur un iPhone, je reçois toujours lesSous-classe UISplitViewController dans une application universelle

dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController 
    Referenced from: /var/mobile/Applications/..... 
    Expected in: /System/Library/Frameworks/UIKit.framework/UIKit 

redoutés erreurs dans la console lors d'une tentative d'exécuter sur un iPod de 1re génération toucher. Tout fonctionne correctement sur les appareils iOS 4. Je suppose que le problème est que j'ai sous-classé UISplitViewController et il étouffe lors de la lecture de la ligne "@interface SplitControl: UISplitViewController {" d'un fichier .h. La seule raison pour laquelle je l'ai sous-classé est de surcharger la méthode shouldAutorotateToInterfaceOrientation. Je fais mon application entière par programme sans IB. Serait-il utile si j'utilisais IB pour créer ce SplitViewController et lui dire de supporter toutes les orientations?

Existe-t-il un moyen de surcharger shouldAutorotateToInterfaceOrientation sans sous-classer le contrôleur? Toute autre façon de masquer UISplitViewController à partir d'appareils pré-3.2?

+0

Je compile avec Base SDK 4.0, donc des macros comme '#if __IPHONE_OS_VERSION_MAX_ALLOWED> = 30200' ne seraient pas utiles. J'ai besoin que cela soit résolu au moment de l'exécution, pas au moment de la compilation. – SaltyNuts

Répondre

6

Tout ce que vous avez à faire est de lier UIKit.framework faiblement. Dans les paramètres généraux de votre cible, dans la liste des "Bibliothèques liées", changez le type de UIKit.framework en "Faible" au lieu de "Obligatoire".

+0

ouais tu as sauvé ma journée. Tks – Vinzius