Cocoa-Touch: проверьте, существует ли UIViewController перед его инициализацией - PullRequest
0 голосов
/ 20 июля 2011

Есть ли способ проверить, загружен ли UIViewController в память / отображается на экране?

Примерно так:

if([ContentRvController exists]){
    contentView *ContentRvController = [[contentView alloc] 
        initWithNibName:@"contentView" bundle:nil]; //ContentView is a custom UIViewController
    ....
    //Code to set the UIViewController
    ....
}
else{
    [ContentRvController release];
}

Это должно происходить при нажатии кнопки (которая сейчас инициализирует ViewControllers).Прямо сейчас, когда он нажал, он открывает n ViewControllers, он должен отображать только по одному за раз.

Вот и все, привет и надеюсь, что вы мне поможете.

Ответы [ 2 ]

0 голосов
/ 20 июля 2011

Это на основе существующего кода? Классы должны начинаться с заглавных букв, а экземпляры должны быть верблюжьими, например

if([contentRvController exists]){
    ContentView *contentRvController = [[ContentView alloc] 
    initWithNibName:@"contentView" bundle:nil]; //ContentView is a custom UIViewController
    ....
    //Code to set the UIViewController
    ....
}
else{
    [contentRvController release];
}

вероятно, стоит указать это в шапке, т.е.

@interface SomeClass : NSObject {

}
@property(non-atomic, retain) ContentView *contentRvController;
@end

и затем в коде вы можете сделать

if(contentRvController!=nil){
    ContentView *aView=[[[ContentView alloc] init] autorelease];
    self.contentRvController=aView;
}

Кроме того, не делайте бит else {[contentRv release];}, если вы его где-нибудь автоматически выпустили, в какой-то момент он будет просачиваться.

0 голосов
/ 20 июля 2011

Если вы используете UINavigationController, проверьте свойство topViewController.

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