2010-10-10 2 views
0

Problème: Dans mon code d'application iPhone, je suis en train de positionner et d'animer beaucoup de vues par programmation. Pour l'iPad, je veux fournir une interface utilisateur complètement différente, mais aussi par programmation. Je n'aime pas utiliser les fichiers Xib. Comment puis-je faire des vues différentes et voir les contrôleurs et les charger selon si c'est un iPad ou un iPhone? Quel est le moyen le plus propre?Comment fournir des classes saparate pour iPhone + iPad en une seule version universelle?

+2

Je ne vais pas lire votre question avant d'accepter quelques réponses à vos questions. – Emil

+0

@Jacob Quelle question? J'ai une question non acceptée. – Emil

+0

A accepté toutes les bonnes réponses. Désolé pour le dérangement. – openfrog

Répondre

2

Il vous suffit de spécifier l'identifiant de l'appareil, vous pouvez le faire en ajoutant la chaîne "~ iphone" ou "~ ipad". Donc, pour un contrôleur de vue ce serait; "MyViewController ~ iphone.m" et pour l'iPad "MyViewController ~ ipad.m"

1

En outre, si vous rencontrez des problèmes de compilation parce que vous créez des classes uniquement disponibles pour iOS 3.2 et supérieur, vous pouvez utiliser un code comme celui-ci :

Class popClass = NSClassFromString(@"UIPopoverController"); 
if(popClass) { 
    id infoPop = [[popClass alloc] initWithContentViewController:popViewController]; 
    [infoPop presentPopoverFromRect:CGRectMake(20, 70, 10, 10) inView:self.view permittedArrowDirections:4 animated:YES]; 
} 
+0

Vous devriez utiliser 'UIUserInterfaceIdiom' à la place. –

+0

Cela permettra de détecter si le code doit être exécuté, mais cela ne sera pas utile lors de la compilation si votre cible est antérieure à la version 3.2. Il pourrait certainement remplacer le test, mais NSCLassFromString serait toujours nécessaire pour créer une classe que le périphérique cible pourrait ne pas connaître. – Ben

Questions connexes