2010-06-18 3 views
0

Comment puis-je accéder au délégué partagé ou au «délégué» spécifique au périphérique dans une application universelle? Je veux stocker des propriétés sur le délégué partagé et y mettre la logique de base, mais si je veux faire, disons des trucs spécifiques à l'iPhone sur le délégué iPhone, je suppose que j'ai besoin d'accéder aux deux délégués séparément. Est-ce correct?Accès au délégué Délégué verus iPhone/iPad?

Comment accéder à ces délégués dans le code?

Répondre

4

Je ne suis pas sûr de ce que vous voulez dire par délégués délégués de l'appareil. Je suppose que par "délégué partagé" vous faites référence à votre délégué d'application. Si vous avez besoin de quelque chose spécifique à l'iPhone ou l'iPad, vous pouvez le faire:

BOOL isiPad = NO; 
if ([UIDevice instancesRespondToSelector:@selector(userInterfaceIdiom)]) { 
    UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom]; 

    if (idiom == UIUserInterfaceIdiomPad) { 
     isiPad = YES; 
    } 
} 

if (isiPad) { 
    // iPad-specific stuff 
} else { 
    // iPhone-specific stuff 
} 

C'est mieux que d'utiliser #define s parce que vous pouvez compiler une application universelle pour fonctionner sur tous les appareils iOS.

EDIT: Ajouté introspection pour éviter que cela ne plante sur iPhone OS 3.1.x et plus tôt. Merci, Bastian.

+0

Lors de la mise à niveau d'un ancien projet pour iPad, XCode crée un délégué partagé. J'ai supposé qu'une nouvelle application universelle fait la même chose. Apparemment non. Mon erreur. – Moshe

+0

Veuillez noter que cela va planter sur les périphériques 3.1.x car userInterfaceIdiom n'existe pas là. Vous devez d'abord vérifier si currentDevice a ce sélecteur. – Bastian

+0

Je viens de vérifier à nouveau et il y a une définition que vous pouvez utiliser déjà défini dans UIDevive.h: #define UI_USER_INTERFACE_IDIOM() ([[UIDevice currentDevice] respondsToSelector @selector (userInterfaceIdiom)] [[UIDevice currentDevice] de userInterfaceIdiom]? : UIUserInterfaceIdiomPhone) – Bastian