Мысленный эксперимент: используйте три представления таблицы, но используйте один и тот же источник данных / делегат. Подключите его так, чтобы всякий раз, когда прокручивался один вид (т. Е. Через –scrollViewDidScroll:
), вы также вручную прокручивали другие виды с помощью -setContentOffset
в соответствующую позицию. Вы должны остерегаться возможных звонков. Я не могу гарантировать, что это сработает, но это настолько близко, насколько вы можете понять, о чем я могу думать.
Вы также можете добавить дополнительные строки сверху и снизу для определенных видов, если вы хотите, чтобы крайний левый вид имел возможность прокручиваться вниз, или крайний правый - для прокрутки к верху.
Редактировать: По большей части, это так просто, как кажется. Я только что попробовал это и не было так уж плохо. Однако есть некоторые небольшие причуды, о которых вам нужно позаботиться, включая круговые вызовы и замедление просмотра прокрутки.
Для циклических звонков, о которых я упоминал ранее, я справился с этим, используя следующий код:
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
tableView1.delegate = nil;
tableView2.delegate = nil;
tableView3.delegate = nil;
scrollView.delegate = self;
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
tableView1.delegate = self;
tableView2.delegate = self;
tableView3.delegate = self;
}
Что касается замедления после этого, то это не так сильно, что другие виды не будут замедляться вместе с ними, но они ведут себя немного шатко, если вы коснетесь одного из них, пока они замедляются. В этом случае я не пробовал, чтобы посмотреть, сработает ли он на 100%, но вы должны попытаться кодировать с здесь , чтобы остановить замедление в его треках, когда вы начнете перетаскивать его снова.