У меня есть UITableView, который показывает список фильмов. (Название и идентификатор фильма хранятся в предварительно заполненном массиве).Запустить фоновый поток до UITableView Segues
Когда я нажимаю на строку, я хочу, чтобы приложение зашло в фоновый режим ПЕРЕД СЕГЕИНГОМ, загрузите «информацию о фильме» И ТОГДА на новый взгляд после завершения фонового потока. Загрузка информации прекрасна, поэтому я не учитываю эту часть кода.
Однако, похоже, я не могу понять, как показать прядильщик, чтобы пользователь знал, что что-то происходит, а затем переход или завершение работы по завершению фона.
Любая помощь?
В моем UITableViewController классе
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
MovieDetailsViewController *mvc = (MovieDetailsViewController*)segue.destinationViewController;
mvc.movie = movie;
}
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
//I KNOW THAT IF THIS RETURNS TRUE prepareForSegue is called
bool canSegue = NO:
if ([identifier containsString:@"seg_movie"]) {
// SHOW Activity spinner
[self doMovieLookup];
if (movie != nil) {
canSegue = YES;
}
}
return canSegue;
}
- (void) doMovieLookup {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//HERE I AM COMMUNCATING WITH THE SERVER AND PARSING JSON RESULTS INTO A DICTIONARY
//this code works fine then I send the JSON results on to object creation.
[self buildMovieWithDictionary:[[dictionaryResults objectForKey:@"Movie"] objectAtIndex:0]];
dispatch_async(dispatch_get_main_queue(), ^{
//DO I NEED SOMETHING HERE?
//STOP SPINNER
});
});
}
Просто метод, который создает объект Movie упаковывает кто был диковинкой.
- (void) buildMovieWithDictionary : (NSDictionary*) dictionary {
movie = [[Movie alloc] init];
movie.title = [dictionary objectForKey:@"MovieTitle"];
movie.description = [dictionary objectForKey:@"MovieTitle"];
movie.releasedate = [dictionary objectForKey:@"MovieTitle"];
}
Спасибо! Для тех, кто подходит к этой теме в будущем, в IB я удалил segue из ячейки и сделал segue из View Controller к новому контроллеру представления назначения, а затем использовал предложение Wyatt's PerformanceSegueWithIdentifer. –