9
votes

Universal iPhone / iPad Appdelegate

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.

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 , comment savoir que cela fonctionnera uniquement pour l'iPhone iOS par exemple?


2 commentaires

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.


5 Réponses :


1
votes

Je fais la même chose pour le moment et j'ai beaucoup appris du tutoriel suivant:

http://iphonedevelopment.blogspot.com/ 2010/04 / Convertir-iPhone-Apps-to-Universal.html

Cela m'a permis de configurer le projet pour prendre en charge les périphériques iPad et iPhone.


0 commentaires

9
votes

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;


1 commentaires

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."



13
votes

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.

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.

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.


0 commentaires

2
votes

Variations sur un thème

Créer un fichier commun.h xxx

importer ce commun.h / appdelegate_iphone.h / appdelegate_ipad.h /appdelegate.h dans votre Fichier en-tête précompilé .pch fichier

dans votre classe, vous pouvez simplement appeler xxx


0 commentaires

1
votes

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;


1 commentaires

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.