transmettre des données à objet de UIViewController sur iPhone

voix
0

J'ai une application iPhone avec un tableviewcontroller. Lorsque vous cliquez sur une certaine cellule, il ouvre une nouvelle UIViewController avec ce code:

 nextViewController = [[avTouchViewController alloc] initWithNibName:@avTouchViewController bundle:nil];

Le UIViewController ci-dessus appelé avTouchViewController a une propriété qui ressemble à:

IBOutlet SomeObject *controller;

SomeObject est un objet avec toutes les propriétés de vue pertinents.

Je voudrais passer un paramètre NSString du tableviewcontroller j'initialiser le avTouchViewController avec pour someObject.

Comment puis-je faire ceci?

Créé 26/08/2009 à 23:58
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

Je suis un peu confus par votre question; vous dites que vous créez votre avTouchViewControllers lorsqu'une cellule est prélevée à l' intérieur d' un existant UITableView, mais votre dernière partie décrit la situation inverse.

En gros, si vous voulez transmettre des informations à un contrôleur de vue, juste donner une propriété qui peut être réglé (qui peut déjà être le cas), par exemple:

nextViewController = [[avTouchViewController alloc] initWithNibName:@"avTouchViewController" bundle:nil];
nextViewController.controller = theInstanceOfSomeObjectIWantToPass;

Vous pouvez également renommer votre controllerpropriété. Pour un lecteur, il ne fait pas de sens qu'un contrôleur de vue a une propriété appelée controllerqui est en fait un SomeObject*. De plus, vos noms de classe doivent être capitalisées, utilisez -à- dire au AvTouchViewControllerlieu de avTouchViewController.

Créé 27/08/2009 à 01:01
source utilisateur

voix
0

Si je fais cela, je voudrais ajouter mon initialiseur à ma sous-classe UIViewController:

- (id)initWithController:(NSString *pController) {
    if (self = [super initWithNibName:@"avTouchViewController" bundle:nil]) {
        self.controller = pController;
    }
    return self;
}

Et puis il suffit d'appeler les éléments suivants (en tableView: didSelectRowAtIndexPath: ou whereever):

NSString *controller = @"Sample String";

AVTouchViewController *nextViewController = [[AVTouchViewController alloc] initWithController:controller];
[controller release];

[self.navigationController pushModalViewController:nextViewController animated:YES];
[nextViewController release];

Comme point de style, les noms de classe commencent traditionnellement avec des lettres majuscules (d'où mon changement de AVTouchViewController à).

Créé 27/08/2009 à 01:08
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more