Как определить текущий вид на дисплее - PullRequest
3 голосов
/ 17 декабря 2008

Если у меня есть 3 различных представления, которые определены в 3 соответствующих функциях, а именно:

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

Они добавляются к self.view, когда требуется определенный вид.

Мой вопрос: как мы узнаем, какие из этих представлений в настоящее время отображаются? Есть ли параметр, который будет определять, какой вид является текущим?

Ответы [ 3 ]

5 голосов
/ 17 декабря 2008

Вы можете пометить каждое представление целым числом, а затем прочитать тег, чтобы определить, какое представление является активным (при условии, что вы заменяете 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 голосов
/ 18 декабря 2008

Предполагая, что вы удаляете два других вида из self.view, когда вы меняете их, вы можете использовать [self superview], чтобы определить, какой из них отображается в данный момент.

1 голос
/ 16 марта 2010

Все UIView имеют свойство окна , которое устанавливается, когда оно отображается в окне, и устанавливается равным нулю, когда оно удаляется. Вы можете получить значение свойства окна, чтобы увидеть, отображается ли в данный момент вид в окне:

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

Вы также можете переопределить willMoveToWindow: в подклассе UIView, и оно будет вызываться всякий раз, когда представление добавляется или удаляется из окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...