Как установитьContentOffset: после insertRowAtIndexPath: - PullRequest
0 голосов
/ 22 февраля 2012

Я разрабатываю приложение для iOS 5.

Как я могу установить contentOffset после вставки строки (insertRowAtIndexPath:) в табличное представление? insertRowAtIndexPath: устанавливает смещение на 0. Я пытался установить смещение в willDisplayRow: методе делегата, но без результата.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Если проблема, которую вы хотите изменить смещение после завершения анимации вставки строки, вызовите метод, чтобы установить смещение после задержки. Это позволит завершить текущий цикл выполнения, позволяя завершить анимацию вставки строки. Вы можете отключить взаимодействие с табличным представлением во время задержки.

Вы можете попробовать добавить что-то вроде следующего в ваш tableViewController.

- (void) adjustsContentOffset: (NSIndexPath*) indexPath;
{
    CGFloat offsetY = 0.0; // insert some calculation deriving your value from indexPath
    [[self tableView] setContentOffset: CGPointMake(0.0, offsetY) animated: YES];
}

- (void) insertRow: (NSIndexPath*) indexPath;
{
    [[self tableView] insertRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationLeft];
    [self performSelector: @selector(adjustsContentOffset:) withObject: indexPath afterDelay: 0.3];
}
0 голосов
/ 23 февраля 2012

Еще раз спасибо Мэтью за действительно полезный ответ, но в конце концов я нашел другое решение, которым я хочу поделиться с сообществом:

Просто добавьте пустую ячейку в конце таблицы с высотой, равной вашему желаемому смещению

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...