2009-06-27 11 views
4

Je viens d'installer iPhone SDK 3.0 et j'ai trouvé que la propriété text de UITableViewCell n'est plus utilisée, et devrait utiliser textLabel.text à la place. Est-ce que cela signifie que je dois connaître la version actuelle du système et appeler la méthode correspondante? comme ça.iPhone SDK 3.0 Vs. 2.2.1

UITableViewCell *cell = ...; 
if ([[[UIDevice currentDevice] systemVersion] isEqualToString:@"3.0"]) { 
    cell.textLabel.text = @"..."; 
} else { 
    cell.text = @"..."; 
} 

Si oui, ce serait très ennuyeux.

Répondre

3

Construisez simplement pour la version 3.0 et ne vous inquiétez plus de la version 2.2. Contrairement aux mises à niveau majeures du système d'exploitation, les utilisateurs ont très rapidement mis à niveau leur nouvelle version de l'iPhone OS. Découvrez ce post sur le blog TapBots: iPhone 3.0 Adoption Rate.

Au moment où votre application est approuvée (dans 2 semaines + certains?) Presque personne n'utilisera plus 2.2!

+0

salut cela peut être utilisé pour devlop application universelle http://cocoabugs.blogspot.com/2010/09/utility-method-to-know-ios4-installed.html –

1

Vous pouvez utiliser le SDK 3.0 et cibler une version plus ancienne sur vos projets, comme 2.2 ou 2.2.1.

Pour ce faire, vous définissez le SDK de base à 3,0 mais modifier le paramètre iPhone OS cible de déploiement. Les deux paramètres sont accessibles si vous obtenez des informations sur le projet.

0

En fait, je ne pense pas que vous devez faire cela parce que quand vous construisez votre projet, vous choisissez ce firmware, il est à pour cible, comme mentionné PGB. Ensuite, vous pouvez simplement utiliser les directives #ifdef. Voici plus d'informations: iPhone check firmware version Une réponse beaucoup plus complète est affichée ici: How to target a specific iPhone version?

EDIT: Je retire un texte après avoir réalisé que VersionSystème est en fait une chaîne, source: UIDevice Docs.

Si vous allez l'utiliser dans divers fichiers sur votre projet, vous pouvez peut-être organiser en ajoutant comme une propriété à votre appdelegate, et les récupérer la valeur en faisant quelque chose comme ceci:

MyAppDelegate *theDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSString *version = theDelegate.version; 

Mais cela pourrait être trop compliqué pour quelque chose d'aussi simple que le numéro de version.

4

Au lieu de vérifier la version du système d'exploitation, vous pouvez vérifier si la cellule a la nouvelle propriété:

if ([cell respondsToSelector:@selector(textLabel)]) { 
    // Do it the 3.0 way 
    cell.textLabel.text = @"..."; 
} else { 
    // Do it the 2.2 way, but avoid deprecation warning 
    [cell performSelector:@selector(setText:) withObject:@"..."]; 
} 
1

Il est dépréciée et ils suggèrent la nouvelle façon, mais vous pouvez certainement toujours utiliser la 2.2 façon, si vous voulez et cela n'affectera pas négativement votre application fonctionnant sur la version 3.0. Si vous êtes préoccupé par les utilisateurs toujours 2.2 vérifier définitivement le lien ben fourni. Je ne pense pas que ce sera un gros problème si vous compilez pour 3.0.

0

Si vous décidez de rester avec 2.2 pour l'instant, veillez à tester dans le simulateur avec 3.0. Nous avons vu des différences comportementales étranges entre 2.2 et 3.0, en particulier avec des tables.

Questions connexes