在视图控制器中仅加载一次数据

时间:2016-11-28 14:24:31

标签: ios objective-c video

我现在已经坚持了一段时间并且无法找到解决方案。

我正在构建一个类似于musical.ly的应用程序,其中主页上有一个自定义导航控制器,允许用户在3个屏幕上滑动,底部有一个标签栏(参见应用截图)。

现在发生的事情是,就在我从1个屏幕滑动到另一个屏幕,然后再次返回时,它再次加载所有数据并将我带回第一个视频 - 我希望能够在屏幕并在我之前的视频中的同一时间戳回到同一视频。

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{
    [MBProgressHUD showHUDAddedTo:pageViewController.view animated:TRUE];
    [self loadjson_homeVideoData];
});

上面是我的代码块,我在其中调用Web服务,在NSArray中存储响应并将此数组传递给NSDictionary到另一个视图控制器。 (NSArray和词典都是强大的财产)

问题是,当我移动到另一个控制器并进入家庭控制器时,所有数据都变为空并且应用程序崩溃。

当该视图控制器再次调用时,有没有办法显示该数据?我只想一次加载数据,而不是每次都加载数据。

PS:调用dispatch_once(& onceToken,^ {在ViewDidLoad()

我真的很感激这里的一些指导 - 供参考,你可以查看iOS上的musical.ly应用程序

this is the home screen, see at the top are three screens that the user can swipe among

1 个答案:

答案 0 :(得分:0)

dispatch_once(&onceToken, ^{
    [MBProgressHUD showHUDAddedTo:pageViewController.view animated:TRUE];
    [self loadjson_homeVideoData];
});

用此替换您的代码,然后运行并检查。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [MBProgressHUD showHUDAddedTo:pageViewController.view animated:TRUE];
        [self loadjson_homeVideoData];
    });