2012-08-16 2 views
0

J'ai une application universelle qui fonctionne bien sur le simulateur mais quand je le mets sur un périphérique réel (iPad 4S et 3ème génération) l'interface du contrôleur View ("EditNameViewControlleriPhone", ignore le fait iPhone fait partie du nom) n'apparaît que comme la version iPhone même si j'ai aussi un iPad xib.L'interface incorrecte apparaît sur le périphérique iOS, mais pas sur le simulateur

Voici une capture d'écran de la façon dont je nommai choses:

enter image description here

bouton dans mon SettingViewController apporte l'interface editname. Voici qu'il code pour que:

-(IBAction)editclass{ 
    EditNameViewControlleriPhone*vc2 = [[EditNameViewControlleriPhone alloc] init]; 
    vc2.delegate = self; 
    [self presentModalViewController:vc2 animated:YES]; 
} 

-(void)dismiss{ 
    [self dismissModalViewControllerAnimated:YES]; 
} 

Est-ce mauvais code ou est-il une convention de nommage que je manque ou est-ce autre chose? Désolé si c'est vraiment simple - je suis nouveau à Xcode. Merci

Répondre

1

Vous pouvez charger manuellement l'interface correcte en utilisant le code suivant:

-(IBAction)editclass{ 
    EditNameViewControlleriPhone *vc2; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     vc2 = [[EditNameViewControlleriPhone alloc] initWithNibName:@"EditNameViewControlleriPhone_iPhone" bundle:nil]; 
    } else { 
     vc2 = [[EditNameViewControlleriPhone alloc] initWithNibName:@"EditNameViewControlleriPhone_iPad" bundle:nil]; 
    } 
    vc2.delegate = self; 
    [self presentModalViewController:vc2 animated:YES]; 
} 

La clause if vérifie si votre appareil actuel est un iPad ou un iPhone. L'initialiseur dans cette clause instancie viewController en utilisant le bon fichier xib.


Alternativement, vous pouvez laisser cela au système en suivant un simple schéma de nommage;

EditNameViewControlleriPhone~iphone.xib pour votre iPhone Version EditNameViewControlleriPhone~ipad.xib pour votre version iPad

De cette façon, votre code peut rester tel quel.


Chaque fois que vous trouver des différences dans les fichiers ne soient pas disponibles sur l'appareil ou simulateur et vice-versa, la raison habituelle est un problème dans les capitales. Le simulateur est généralement insensible à la casse (dépend de votre système de fichiers OSX), l'appareil est sensible à la casse (toujours). Last but not least, un build-clean fait souvent des miracles quand les choses continuent de bugging sans explication plausible.

+0

le ~ s et un build-clean ont fait l'affaire. Merci!! –

0

Sous la Target, il y a un onglet Summary, vérifiez votre interface à vous contrôler vous utilisez l'interface correcte

+0

Comment trouver la cible? –

+0

@GregM utilise le bouton 'Afficher le navigateur du projet' ou utilise le raccourci cmd + 0. En haut de la page, quel nom est le même que le nom du projet – limon

+0

L'onglet Résumé est-il juste celui avec l'icône de dossier? Le nom du contrôleur de vue que j'essaie d'afficher semble correct (y compris la capitalisation). Vous pouvez voir la capture d'écran pour savoir comment j'ai nommé des choses. –

Questions connexes