Je me demandais si quelqu'un serait capable de me dire, de commencer une nouvelle application à partir de zéro, comment puis-je organiser une application universelle (iPhone / iPad) iOS. J'ai remarqué d'utiliser le modèle par défaut avec la bêta Xcode, il vous donne à la fois un appdelegate partagé et des applDeleaux sous-classés pour iPhone et iPad. P>
Maintenant, comment mettez-vous dans la logique pour déterminer quelle application de déléguée à utiliser, comment sache-t-elle laquelle est-elle à instanecter et à travailler avec le modèle par défaut. Si je devais écrire dans l'iPhone appdelegate code>, comment savoir que cela fonctionnera uniquement pour l'iPhone iOS par exemple? P>
5 Réponses :
Je fais la même chose pour le moment et j'ai beaucoup appris du tutoriel suivant: p>
http://iphonedevelopment.blogspot.com/ 2010/04 / Convertir-iPhone-Apps-to-Universal.html P>
Cela m'a permis de configurer le projet pour prendre en charge les périphériques iPad et iPhone. P>
Utilisez le code suivant
id<UIApplicationDelegate> delegate = [[UIApplication sharedApplication] delegate]; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) AppDelegate_iPad *appDelegate = (AppDelegate_iPad *) delegate; else AppDelegate_iPhone *appDelegate = (AppDelegate_iPhone *) delegate;
Je reçois des erreurs sur les 3ème et 5ème lignes de Xcode que Appdelegate est non déclarée, et que "Nom d'interface inattendu Appdelegate_Iphone (/ iPad): expression attendue."
L'info.plist ("Nom de base du fichier NIB principal") Pour une application Spécifie une fenêtre principale .xib à charger et que le fichier .xib spécifie un délégué de l'application et un contrôleur de fenêtre racine pour l'application. p>
L'info.plist pour un iPad ("Nsmainnibfile ~ iPad") Spécifie également une fenêtre principale fichier .xib pour l'iPad, qui peut contenir une autre déléguée d'applications et un autre contrôleur de fenêtre racine pour l'application. Ou ils pourraient être les mêmes, à l'aide de chèques d'exécution UiuserInterfaceidiCadompad. P>
Le temps d'exécution, qui sait quel type de type sur lequel il s'exécute, choisit le fichier initial initial correct à la charge de l'info.plist et à partir de là, vous obtenez le bon délégué et le contrôleur de fenêtre racine correctement configuré et en cours d'exécution. p>
Variations sur un thème
Créer un fichier commun.h p> importer ce commun.h / appdelegate_iphone.h / appdelegate_ipad.h /appdelegate.h dans votre Fichier en-tête précompilé .pch fichier p> dans votre classe, vous pouvez simplement appeler p>
Continuer sur la réponse de Sagar, voici le code qui réparera le commentaire de Ryan Waggoner.
id<UIApplicationDelegate> delegate = [[UIApplication sharedApplication] delegate]; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) delegate = (AppDelegate_iPad *) delegate; else delegate = (AppDelegate_iPhone *) delegate;
Ce n'est pas utile. Pourquoi la distribution serait-elle nécessaire si le délégué est défini de toute façon? Vous ne le déclarez même pas comme une instance si différentes classes.
Si vous discutez de la bêta Xcode, je crois que c'est sous NDA .. Mais cette question pourrait aider Stackoverflow.com/Questtions/2862537/...
Ce n'est pas une question spécifique bêta xcode alors ignorer j'ai mentionné cela.