一个简单的viewDidLoad问题

时间:2011-04-09 14:56:43

标签: iphone objective-c cocoa-touch ios4 viewdidload

我有一个UINavigationController的应用,tabBarController和很多观点。

我的两个主要视图,对应于两个标签,在加载数据时都显示不错的MBProgressHUD。这是从viewDidLoad触发的,并且只能显示一次。从服务器进行的后续刷新不使用MBProgressHUD

问题是,在某些情况下会再次调用viewDidLoad。我相信这是因为视图因内存限制而被卸载,然后重新加载,这会触发我第一次只想运行的代码。

我的问题:我怎样才能确保只在第一次加载视图时调用它,而不是尝试在某处存储临时计数。我所有的解决方案看起来都非常糟糕。 :)

谢谢!

2 个答案:

答案 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