2010-10-11 3 views
0

Je veux faire une construction universelle, mais je crée mon interface utilisateur entièrement par programme. Puis-je ajouter mes différentes classes de contrôleurs de vue aux répertoires de ressources spécifiques à l'unité? Ou faut-il partager les cours sur les deux appareils?Comment développer une application universelle pour iPhone + iPad sans fichiers xib?

2) Si je dois partager les classes le long des deux appareils, ce qui est le plus sûr moyen de charger ou conditionnellement CLASSA ClassB selon qu'elle est un appareil iPhone ou iPad?

+3

Déplacez votre interface utilisateur vers les xibs. Gérer les différences par programme semble être une lourde charge, et comme vous avez déjà beaucoup de travail à faire pour supporter l'iPad, vous pouvez aussi prendre le coup et déplacer les définitions de l'interface utilisateur à un endroit plus gérable. Ajouté comme commentaire car il ne répond pas à votre question spécifique. – dannywartnaby

+0

+1 pour fournir les problèmes que nous pouvons rencontrer, si nous ignorons la puissance des xibs. – Krishnan

Répondre

3

1) Vous ne pouvez pas ajouter les classes de contrôleur de vue à deux endroits, car au moment de la compilation, le même symbole (c'est-à-dire le nom de classe) sera trouvé à deux endroits et l'application ne sera pas liée. 2) Je dirais que le moyen le plus sûr serait d'avoir un fichier .xib différent, mais si vous voulez utiliser le code, vous pouvez créer un gestionnaire de vues singleton qui ne fait que le chargement correct des classes. Ensuite, dans le reste de votre code, tout ce que vous devez faire est: [MyViewManager sharedInstance] instantiateViewController:kMyDetailsView] et d'afficher la vue que vous désirez.

Pour déterminer le périphérique actuel, vous pouvez utiliser une instruction comme celle-ci: #define iPad [UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPad. Il peut être inclus dans votre fichier de préfixe le rendant disponible pour l'ensemble du projet.

1

Sur chaque contrôleur de vue, vous pouvez effectuer une vérification de périphérique pour voir quel périphérique exécute votre application et créer votre interface utilisateur en conséquence. Par exemple, utilisez un seul ensemble de contrôleurs de vue et dans les fichiers * .m, dans une boucle if-else, créez votre interface utilisateur en conséquence.

Reportez-vous à ce poste pour faire des vérifications de l'appareil: Determine device (iPhone, iPod Touch) with iPhone SDK

PS: Dans votre if-else, faire une si (iPad) {} ​​else {} vérifier comme une meilleure pratique, car, souvent souvent qu'autrement , les gens oublient de vérifier l'iPod Touch s'ils le font (iPhone) {} else {}

+0

D'ailleurs c'est essayé et testé et ça fonctionne, puisque j'ai une application sur l'App Store en utilisant cette technique :) – Sid

Questions connexes