Я реализую бесконечный UIScrollView, используя дубликаты конечных страниц.В частности, у меня есть 3 ViewController, чьи представления я добавляю как подпредставления к содержимому UIScrollView.Таким образом, содержимое UIScrollView выглядит следующим образом (V1 = Viewcontroller View 1, V2, Viewcontroller View 2, V3 = ViewController's View)
UIScrollView Content: [V3] [V1] [V2] [V3] [V1]
Когда пользователь прокручивает вправо от V2 до V3 к V1, я использую scrollRectToVisible, чтобы переместить ScrollView на V1 во 2-й позиции, делая его бесконечным.Аналогично, когда пользователь прокручивает влево от V2 до V1 до V3, я перемещаю вид прокрутки в V3 со 2-й до последней позиции.
В кодовом направлении это выглядит так:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender {
if (scrollView.contentOffset.x == 0) {
// user is scrolling to leftwards and has reached the position 0 of the scrollview
[scrollView scrollRectToVisible:CGRectMake(960,0,scrollView.frame.size.width,scrollView.frame.size.height) animated:NO];
}
else if (scrollView.contentOffset.x == 1280) {
// user is scrolling rightward and has reached the last position of the scrollview
[scrollView scrollRectToVisible:CGRectMake(320,0,scrollView.frame.size.width,scrollView.frame.size.height) animated:NO];
}
}
}
у меня проблема в том, что ViewControllers имеют в себе UITableViews.Например, V1 имеет UITableView.Если пользователь перешел к строке 10 UITableView V1, я считаю, что мне нужно было бы синхронизировать состояние UITableView между представлениями V1 в представлении прокрутки.
Пользователь видит только самый правый [V1] длядоли секунды или когда они только перетаскивают вид прокрутки на полпути, но они все еще могут заметить, что это не тот же самый вид таблицы, если состояние не синхронизировано.
Есть ли способ обойти это?Один из способов, который я подумал, - просто сохранить состояние и затем обновить все V1, чтобы они отображали одно и то же.
Возможно ли иметь два объекта UITableView, которые каким-то образом автоматически зеркально отражают друг друга?
Спасибо!