簡體   English   中英

一個簡單的viewDidLoad問題

[英]A simple viewDidLoad question

我有一個帶有UINavigationController的應用程序,其中帶有tabBarController和很多視圖。

與這兩個選項卡相對應的兩個主視圖在加載數據時均顯示一個漂亮的MBProgressHUD 這是從viewDidLoad觸發的,並且只能顯示一次。 服務器隨后的刷新不使用MBProgressHUD

問題是,在某些情況下會再次調用viewDidLoad 我相信這是因為視圖由於內存限制而被卸載,然后在以后重新加載,這觸發了我只想第一次運行的代碼。

我的問題是:如何確保僅在他們第一次加載視圖時才調用此方法,而不嘗試在某個地方存儲臨時計數。 我所有的解決方案似乎都駭人聽聞。 :)

謝謝!

在視圖控制器中:

@property (nonatomic, assign) BOOL loadStuff;

初始化:

self.loadStuff = YES;

在viewDidLoad中:

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

self.loadStuff = NO;

僅當您實際上在執行需要一段時間的代碼時,才安裝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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM