2009-07-23 6 views
8

Je veux ajouter une vue à mon application qui permet à l'utilisateur de changer plusieurs (plusieurs) paramètres. Il devrait ressembler à l'intégré dans "Paramètres Application" (see here) mais il doit être dans mon application elle-même. Pour le moment, j'ai juste une vue de table et j'ajoute manuellement différents objets de cellule (correspondant à des commutateurs, des curseurs, etc.). Y at-il un plus intelligent de faire cela? J'ai l'impression de réinventer la roue.Comment recréer une vue de table "application settings" dans mon application?

+0

Dans le cas où quelqu'un serait intéressé à voir le résultat (allez 'Voie Lactée', puis 'Options'): http://itunes.apple.com/us/app/exoplanet/id327702034?mt=8 – hanno

Répondre

4

Non, c'est la façon, le retour des cellules individuelles dans la méthode tableView:cellForRowAtIndexPath:. Rappelez-vous simplement qu'un UITableViewCell a des propriétés utiles telles qu'une marque accessoire (un bouton de décoloration de détail, un indicateur de divulgation ou une coche) et une image sur le côté gauche.

4

est ici un code que je l'habitude de mettre en place une page de préférences:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 3; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    switch (section) { 
     case (0): 
      return 3; 
      break; 
     case (1): 
      return 2; 
      break; 
     case (2): 
      return 1; 
      break; 
    } 
    return 0; 
} 

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    switch (section) { 
     case (0): 
      return @"Numbers"; 
      break; 
     case (1): 
      return @"Randomize"; 
      break; 
     case (2): 
      return @"About"; 
      break; 
    } 
    return nil; 
} 

L'instruction switch met en place 3 sections: nombres, Randomize et versions. Vous pouvez remplir les sections avec les contrôles dont vous avez besoin

0

Si vous êtes vraiment content, vous pouvez simplement utiliser le même format qu'Apple utilise pour décrire les paramètres qui vont normalement dans le groupe de paramètres - mais au contraire les analyser vous-même, et construire dynamiquement une table basée sur les types de paramètres.

Il est beaucoup de travail, mais là encore la moitié du travail a déjà été fait pour vous Apple a très bien que le schéma sur plist pour la façon dont vous définissez les paramètres.

Cela vous donne également l'avantage d'étendre le format des paramètres pour inclure des capacités supplémentaires l'application des paramètres n'aurait pas ...

11

Ceci est une vieille question par rapport aux normes Internet, mais je l'ai trouvé une façon incroyable Pour ce faire, cela nécessite très peu d'efforts. Je tirais mes cheveux en essayant de construire une deuxième vue de table dans une autre plume avant que je trouve ces gars: InAppSettingsKit

Fondamentalement, ils ont tous les points de vue et les tâches de backend, tout ce que vous faites est d'ajouter les fichiers à votre projeter et implémenter quelques méthodes déléguées dans la classe à partir de laquelle vous appelez la page des paramètres (avec un bouton dans votre interface utilisateur pour ouvrir le panneau des paramètres, etc.), et il prend en charge le composant NSUserDefaults. L'interface utilisateur et les valeurs et les clés des paramètres sont toutes générées à partir du même fichier Settings.bundle que celui utilisé pour les paramètres réels, ce qui signifie que vos paramètres peuvent être modifiés par l'utilisateur dans les deux applications. J'ai trouvé cela beaucoup plus facile que de jouer avec les méthodes de délégué pour une vue de table personnalisée, et maintenant je n'ai pas vraiment à choisir entre Settings.app et quelque chose dans l'application, car il fait les deux. Il ne vous reste plus qu'à tirer les valeurs dont vous avez besoin pour chaque touche de configuration plus tard dans votre application quand vous en avez besoin, avec [[NSUserDefaults standardUserDefaults] objectForKey: @ "key"].

+1

Nice. Malheureusement, presque un an trop tard, mais je le garderai à l'esprit au cas où j'en aurais besoin à nouveau. – hanno

Questions connexes