iOS: прокрутите UITableView к началу после подключения ViewController - PullRequest
0 голосов
/ 05 июня 2018

My UITableView необходимо прокрутить до самого верха после возврата к ViewController при определенных обстоятельствах.

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

DetailController.m

- (void)popToViewController {
    // pop back to ViewController.
    [self.navigationController popViewControllerAnimated:YES];

    // Calls ViewController method
    [self.viewController method];
}

ViewController.m

- (void)method {
   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
            [self.tableView setContentOffset:CGPointZero animated:NO];
        });
}

Я пытался использовать ViewDidAppear в ViewController, и он работает, но он вызывается все время, если я выталкиваю ViewController.Мне нужно только прокрутить UITableView до конца при определенных обстоятельствах.

Редактировать: Я также пытался dispatch_async, но он не работает постоянно.

1 Ответ

0 голосов
/ 05 июня 2018

Возможно добавить блок завершения анимации.Снимите таймер и попробуйте что-то вроде этого:

- (void)popToViewController {
    [CATransaction begin];

    [CATransaction setCompletionBlock:^{
        [self.viewController method];
    }];

    [self.navigationController popViewControllerAnimated:YES];

    [CATransaction commit];
}
...