2008-12-17 9 views
3

Si j'ai 3 vues différentes qui sont définies dans 3 fonctions correspondantes, à savoir:Comment identifier la vue actuelle qui est exposée

- (UIView *)getView1 { /*...*/ } 
- (UIView *)getView2 { /*...*/ } 
- (UIView *)getView3 { /*...*/ } 

Ceux-ci sont ajoutés à self.view quand il faut une vue particulière.

Ma question est, comment savons-nous laquelle de ces vues est actuellement affichée? Y at-il un paramètre qui identifiera quelle vue est la vue actuelle?

+0

Comment sont les vues ajoutées à self.view? Utilisez-vous [self.view addSubview: ...], et si oui, enlevez-vous d'abord la sous-vue existante? Un peu plus d'information aiderait. –

Répondre

5

Vous pouvez marquer chaque vue avec un nombre entier et lire ultérieurement la variable pour déterminer quelle vue est active (en supposant que vous remplacez self.view).

#define TAG_VIEW_1 1 
#define TAG_VIEW_2 2 
#define TAG_VIEW_3 3 
... 
[ [self getView1()] setTag:TAG_VIEW_1 ]; 
[ [self getView2()] setTag:TAG_VIEW_2 ]; 
[ [self getView3()] setTag:TAG_VIEW_3 ]; 
...  

if (self.view.tag == TAG_VIEW_1) { 
    // do something 
} 
else if (self.view.tag == TAG_VIEW_2) { 
    // etc 
} 
... 
3

En supposant que vous retirez les deux autres vues de self.view lorsque vous les modifiez, vous pouvez utiliser la fonction [superview] pour déterminer lequel est actuellement affiché.

1

Tous les UIView ont un window property qui est défini lorsqu'il est affiché dans une fenêtre et défini sur zéro lorsqu'il est supprimé. Vous pouvez obtenir la valeur de la propriété de la fenêtre pour voir si une vue est en cours d'affichage dans une fenêtre:

BOOL isDisplayed = self.view.window != nil; 

Vous pouvez également remplacer willMoveToWindow: dans une sous-classe de UIView et il sera appelé à chaque fois que la vue est ajoutée à ou enlevé d'une fenêtre.

Questions connexes