4

我有一个UINavigationController带有 atabBarController和很多视图的应用程序。

我的两个主要视图,对应于两个选项卡,在MBProgressHUD加载数据时都显示得很好。这是由触发的,viewDidLoad并且只打算显示一次。来自服务器的后续刷新不使用MBProgressHUD.

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

我的问题:如何确保仅在他们第一次加载视图时才调用它,而不是尝试在某处存储临时计数。我所有的解决方案似乎都非常骇人听闻。:)

谢谢!

4

2 回答 2

2

在视图控制器中:

@property (nonatomic, assign) BOOL loadStuff;

在初始化中:

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