2012-08-25 3 views
1

Comment puis-je accéder aux membres du contrôleur qui appelle un UIPopoverController à l'intérieur de ce UIPopoverController?Accès aux membres du contrôleur parent depuis UIPopoverController

Le contrôleur appelant le UIPopoverController est défini comme un délégué dans la fenêtre contextuelle (pas sûr si cela me aide):

self.popover = [[UIPopoverController alloc] initWithContentViewController:theView]; 
[self.popover setDelegate: self]; 

Répondre

1

Vous y accéder de la même manière que vous accédez à des membres de tout autre contrôleur de vue: vous avez besoin d'une référence au contrôleur de vue parent. Par exemple, vous pouvez avoir une variable membre sur votre contrôleur de vue contextuelle qui pointe vers le contrôleur de vue parent. (Vous voudriez rendre une telle référence faible ou non retenue.) Ce membre est souvent un "délégué" du contrôleur de vue popover.

Vous pouvez définir ceci sur votre theView avant de le présenter, ou le passer à son initialiseur.

(Je ne suis pas sûr, mais vous pouvez aussi essayer de regarder parentViewController ou presentingViewController du contrôleur de vue popover.)

1

La meilleure façon est d'utiliser les propriétés

@property double ivar (comme je me souviens) Ce comme vous l'appellerez de cette façon.

double test = self.popover.ivar; 

ou peut-être double test = [self.popover ivar]. Les deux devraient fonctionner.

Pour ce faire, assurez-vous @synthesize ivar; dans le fichier .m du contrôleur maître ou faire une méthode comme un getter

Pour la méthode, si elle est un double,

- (double)ivar 
{ 
    return 5; 
} 

est un Exemple. Si vous renvoyez une variable d'instance, il est préférable de renvoyer une copie de celle-ci. Exemple:

return [ivar2 copy]; 

Si vous utilisez la voie de la méthode, assurez-vous que la méthode est le même nom que la variable dans le fichier .h.

J'espère que j'ai aidé!

EDIT: Remplacer cette chose "double" par UIView, en disant simplement

Questions connexes