我有一个UINavigationController
的应用,tabBarController
和很多观点。
我的两个主要视图,对应于两个标签,在加载数据时都显示不错的MBProgressHUD
。这是从viewDidLoad
触发的,并且只能显示一次。从服务器进行的后续刷新不使用MBProgressHUD
。
问题是,在某些情况下会再次调用viewDidLoad
。我相信这是因为视图因内存限制而被卸载,然后重新加载,这会触发我第一次只想运行的代码。
我的问题:我怎样才能确保只在第一次加载视图时调用它,而不是尝试在某处存储临时计数。我所有的解决方案看起来都非常糟糕。 :)
谢谢!
答案 0 :(得分:2)
在视图控制器中:
@property (nonatomic, assign) BOOL loadStuff;
在init中:
self.loadStuff = YES;
在viewDidLoad中:
if (self.loadStuff) {
// load stuff here
}
self.loadStuff = NO;
答案 1 :(得分: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