3 Stimmen

Wie identifiziert man die aktuelle Ansicht, die angezeigt wird

Wenn ich 3 verschiedene Ansichten habe, die in 3 entsprechenden Funktionen definiert sind, nämlich:

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

Diese werden zu self.view hinzugefügt, wenn eine bestimmte Ansicht benötigt wird.

Meine Frage ist, wie wissen wir, welche dieser Ansichten gerade angezeigt wird? Gibt es einen Parameter, der identifiziert, welche Ansicht die aktuelle Ansicht ist?

5voto

codelogic Punkte 68703

Sie können jede Ansicht mit einer Ganzzahl kennzeichnen und später die Kennzeichnung lesen, um festzustellen, welche Ansicht aktiv ist (vorausgesetzt, Sie ersetzen 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 ) {
    // etwas tun
}
else if ( self.view.tag == TAG_VIEW_2 ) {
    // usw.
}
...

3voto

Lounges Punkte 4676

Unter der Annahme, dass Sie die anderen beiden Ansichten aus self.view entfernen, wenn Sie sie ändern, können Sie [self superview] verwenden, um festzustellen, welche gerade angezeigt wird.

1voto

progrmr Punkte 73486

Alle UIViews haben eine Fenstereigenschaft, die festgelegt wird, wenn sie in einem Fenster angezeigt wird, und auf nil gesetzt wird, wenn sie entfernt wird. Sie können den Wert der Fenstereigenschaft abrufen, um zu sehen, ob eine Ansicht derzeit in einem Fenster angezeigt wird:

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

Sie können auch in einer Unterklasse von UIView willMoveToWindow: überschreiben, und es wird aufgerufen, wenn die Ansicht einem Fenster hinzugefügt oder daraus entfernt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X