2011-04-09 110 views
4

我有一個應用程序UINavigationControllertabBarController和不少觀點。一個簡單的viewDidLoad問題

我的兩個主要視圖對應於兩個選項卡,它們在加載數據時都顯示一個很好的MBProgressHUD。這是從viewDidLoad觸發的,僅用於一次顯示。隨後從服務器刷新不使用MBProgressHUD

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

我的問題:我怎樣才能確保這只是在他們第一次加載視圖時被調用,而不會嘗試在某處存儲臨時計數。我所有的解決方案都顯得非常可笑。 :)

謝謝!

回答

2
在視圖控制器

self.loadStuff = YES; 
在viewDidLoad中

@property (nonatomic, assign) BOOL loadStuff; 
在初始化

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

self.loadStuff = NO; 
+0

看,現在很簡單。不知道爲什麼沒有發生在我身上...試圖讓它變得比必要更復雜。一個注意:因爲我用IB設置視圖,initWithStyle沒有被調用。我利用了BOOL默認爲NO的事實,並且只是做了我的邏輯。再次感謝。 – clifgriffin 2011-04-09 16:38:10

0

只放了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