2016-11-28 5 views
0

Я некоторое время застрял с чем-то и не смог найти решение для него.Загрузить данные только один раз в поле зрения контроллера

Я создаю приложение, похожее на musical.ly, где на главной странице есть пользовательский контроллер навигации, позволяющий пользователю пронестись по 3 экранам с помощью панели вкладок внизу (см. Скриншоты приложения).

Теперь, что происходит здесь, так же, как я прокручивал с экрана 1 на другой, а затем возвращался снова, он снова загружает все данные и возвращает меня к первому видео - я хочу, чтобы можно было провести между экранами и вернуться на одно и то же видео на той же отметке времени, что и в предыдущем видео.

static dispatch_once_t onceToken; 

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

Выше мой блок кода, в котором я звоню веб-службу, хранение ответа в NSArray и передавая этот массив NSDictionary на другой контроллер представления. (NSArray и Dictionary оба являются сильным свойством)

Проблема заключается в том, что когда я перехожу на другой контроллер и прихожу на домашний контроллер, все данные становятся пустыми и сбой приложений.

Есть ли способ отобразить эти данные, когда этот контроллер просмотра снова вызван? Я просто хочу загружать данные сразу и не каждый раз.

PS: Вызов dispatch_once (& onceToken,^{в ViewDidLoad()

Я был бы очень признателен некоторые рекомендации здесь - для справки вы можете проверить musical.ly приложение на прошивкой

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

ответ

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]; 
    }); 
+0

В вашем примере: вы добавляете HUD к своему виду и загружаете json в глобальную очередь. Вы должны использовать основную очередь для HUD вместо глобальной очереди для обоих. –

+0

Проблема не в том, чтобы вызвать api в очереди. Я сохраняю ответ в NSDictionary контроллера домашних представлений, и когда я перехожу на другой контроллер, словарь становится нулевым, а данные не прилипают. –

+0

Вы передаете этот словарь в nextViewController? –

Смежные вопросы