Простой вопрос viewDidLoad - PullRequest
       11

Простой вопрос viewDidLoad

4 голосов
/ 09 апреля 2011

У меня есть приложение с UINavigationController с tabBarController и довольно большим количеством представлений.

Мои два основных вида, которые соответствуют двум вкладкам, показывают оба MBProgressHUD, когдазагружаем данные.Это вызвано от viewDidLoad и предназначено, чтобы быть видимым только один раз.Последующие обновления с сервера не используют MBProgressHUD.

Проблема в том, что viewDidLoad вызывается снова в определенных ситуациях.Я считаю, что это потому, что представление выгружается из-за ограничений памяти, а затем перезагружается позже, что вызывает код, который я хочу запустить только в первый раз.

Мой вопрос: как я могу убедиться, что это вызывается только при первой загрузке представления, не пытаясь где-то сохранить временный счет.Все мои решения кажутся чудовищными.:)

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 апреля 2011

в контроллере представления:

@property (nonatomic, assign) BOOL loadStuff;

в инициализации:

self.loadStuff = YES;

в viewDidLoad:

if (self.loadStuff) {
  // load stuff here
}

self.loadStuff = NO;
0 голосов
/ 09 апреля 2011

Поднимайте HUD, только если вы действительно выполняете код, который занимает некоторое время.Тогда все будет работать.Может быть что-то вроде:

@interface MyViewController : UIViewController {
    NSData* data;
}
@end

@implementation MyViewController
- (void)loadData {
    // put up HUD
    // start loading the data, will call loadDataFinished when done
}

- (void)loadDataFinished {
    // bring down HUD
}

- (void)viewDidLoad {
    [super viewDidLoad];
    if (data == nil) {
        [self loadData];
    }
}

@end
...