4

私はかなりの数のビューUINavigationControllerを持つアプリを持っています。tabBarController

MBProgressHUD2 つのタブに対応する私の 2 つのメイン ビューは、データをロードしているときにどちらも素敵に表示されます。これはトリガーされviewDidLoad、一度だけ表示されることを意図しています。サーバーからの後続の更新では、 は使用されませんMBProgressHUD

問題は、viewDidLoad特定の状況で再度呼び出されることです。これは、メモリの制約のためにビューがアンロードされ、後で再ロードされ、初めて実行したいコードがトリガーされるためだと思います。

私の質問:一時的なカウントをどこかに保存しようとせずに、ビューを初めてロードしたときにのみ呼び出されるようにするにはどうすればよいですか。私の解決策はすべてひどくハックに思えます。:)

ありがとう!

4

2 に答える 2

2

ビューコントローラで:

@property (nonatomic, assign) BOOL loadStuff;

init:

self.loadStuff = YES;

viewDidLoadで:

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

self.loadStuff = NO;
于 2011-04-09T15:30:57.820 に答える
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
于 2011-04-09T15:40:50.763 に答える