繁体   English   中英

一个简单的viewDidLoad问题

[英]A simple viewDidLoad question

我有一个带有UINavigationController的应用程序,其中带有tabBarController和很多视图。

与这两个选项卡相对应的两个主视图在加载数据时均显示一个漂亮的MBProgressHUD 这是从viewDidLoad触发的,并且只能显示一次。 服务器随后的刷新不使用MBProgressHUD

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

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

谢谢!

在视图控制器中:

@property (nonatomic, assign) BOOL loadStuff;

初始化:

self.loadStuff = YES;

在viewDidLoad中:

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

self.loadStuff = NO;

仅当您实际上在执行需要一段时间的代码时,才安装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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM