2009-10-11 8 views
0

J'ai une application basée sur la navigation avec deux niveaux, au second niveau l'utilisateur sélectionne une option qui devrait provoquer l'initialisation et le chargement du fichier Nib approprié (il y a un fichier Nib pour chaque sélection disponible).Initialiser une classe personnalisée selon la sélection de l'utilisateur

Maintenant, je fais l'initialisation dans un commutateur, basé sur la sélection de l'utilisateur. Le problème est que j'ajoute des Nibs pendant le développement, et maintenant j'ai besoin de mettre à jour la partie switch pour chaque Nib que j'ajoute.

Je voudrais créer un fichier * .plist avec les noms Nib et charger la Nib en fonction d'une valeur dans le fichier plist, je n'ai pas réussi à créer une classe avec une valeur dans une variable nsstring.

Voici l'une de mes tentatives - Le nom de la plume est nsstring avec la valeur du nom de la plume.

[code]

childController = [[Nibname alloc] initWithNibName: @Nibname faisceau: nil];

[/ code]

toute aide sera appréciée

Thx

+0

Dans quelle langue est-ce? – Nifle

Répondre

0


Puisque nous parlons de pousser les contrôleurs de vue ici, vous pourriez généraliser 'alloc', et utilisez la nibname pour charger la plume correcte. Comme ceci:

// load info from your plist into a dictionary 
    NSString * path= [[NSBundle mainBundle] pathForResource:@"AllNibs" ofType:@"plist"]; 
    NSDictionary * nibs = [NSDictionary dictionaryWithContentsOfFile:path]; 

    // use a value to select the right nib name 
    NSString *selector = @"viewController1"; 
    NSString *nibName = [nibs objectForKey:selector]; 

    // create the view controller from the selected nib name 
    UIViewController *aController = [[UIViewController alloc] initWithNibName:nibName bundle:nil]; 

Même si vous avez sous-classé UIViewController, ce sera toujours charger la classe correcte du nom nib que vous fournissez.

Questions connexes