индикатор деятельности, появляющийся только в течение секунды

У меня есть 2 взгляда 1) A 2) B

Когда я непосредственно перехожу от представления, чтобы рассмотреть B, оно берет долго, чтобы загрузить, таким образом, я добавил индикатор деятельности в переходе.

Моя проблема, когда я непосредственно перехожу, чтобы рассмотреть B, мои замораживания экрана (грузы) в поле зрения A и только в течение доли секунды, это показывает индикатор деятельности прежде, чем идти на представление B.

Как я удостоверяюсь, что индикатор деятельности появляется, прежде чем он начнет загружать.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{

[self useActivityIndicator];


if ([[segue identifier] isEqualToString:@"ShowAdsDetail"])
{
    //do anything that needs to be done



}

}

    -(void)useActivityIndicator{

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[activityView startAnimating];
subView.hidden = NO;

}
1
nl ja de
@Naux, нет, нет. Добавьте код в том методе к этому вопросу.:)
добавлено автор Josiah, источник
Хорошо, теперь как насчет вашего useActivityIndicator метода.
добавлено автор Josiah, источник
опубликуйте код в вашем prepareForSegue: метод. Заказ там может иногда быть проблемой.
добавлено автор livingtech, источник
Спасибо за ваш ответ. Я сделал просто, что, я поместил его наверху prepareForSegue: метод, но та же самая проблема подходит
добавлено автор Naux, источник
Извините за то, чтобы быть менее полным. Я добавил подпредставление как представление наложения
добавлено автор Naux, источник

2 ответы

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

В случае, если это может помочь другим - я смог зафиксировать его, осуществив performSelector:withObject:afterDelay и затем, в removeSpinner методе, назвав мой performSegueWithIdentifier метод.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:YES];
    [self.spinner startAnimating];
    [self performSelector:@selector(removeSpinner:) withObject:self.spinner afterDelay:2.0];
}

- (void)removeSpinner: (UIActivityIndicatorView *)spinner {
    [self.spinner stopAnimating];
    [self.spinner removeFromSuperview];
    [self performSegueWithIdentifier:@"showMyPlans" sender:nil];
}
1
добавлено
Этот ответ работал как очарование на меня, я просто хотел добавить что, если вы парни хотите, чтобы индикатор деятельности появился снова, если вы используете навигационного диспетчера и щелкаете назад, затем удаляете" [self.spinner removeFromSuperview]"; линия и просто удостоверяется, что вы проверили раскадровку, что индикатор деятельности скрыт когда it' s не оживляющий
добавлено автор Yannis P., источник

Просто измените свой код как:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
      [self useActivityIndicator];
   });

   if ([[segue identifier] isEqualToString:@"ShowAdsDetail"])
   {
      //do anything that needs to be done
   }
}



-(void)useActivityIndicator
{
       dispatch_async(dispatch_get_main_queue(),^{
         [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
         [activityView startAnimating];
         subView.hidden = NO;
      });
}
0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.