Здравствуйте, я нашел способ сделать это.
У меня есть мастер-массив со всеми подпредставлениями (в моем случае это изображения, поэтому я храню имена).
У прокрутки есть только 3 подпредставления: левое, текущее и правое.
Пейджинг включен, поэтому пользователь не может вращать больше одного вида влево / вправо в любое время.
Что я делаю это:
1) отслеживать его текущую позицию на главном массиве. Если он двигается влево, вычтите один; правильно добавь. Как это:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
[some code to determine current page, based on contentOffset]
if (page == 0){
NSLog(@"Going left");
if (currentPage > 0){
currentPage--;
} else {
//cycle to last
currentPage = [images count] -1;
}
} else if (page == 2){
NSLog(@"Going right");
if (currentPage < ([images count] -1)){
currentPage++;
} else {
//cycle to first
currentPage = 0;
}
} else{
NSLog(@"Not moving");
}
2) после перемещения пользователя я перезагружаю 3 новых изображения, например:
//updates the 3 views of the scrollview with a new center page.
-(void) updateScrollViewForIndex:(NSInteger)newCenterPage{
//fist clean scroll view
for (UIView *sView in [scroll subviews]){
[sView removeFromSuperview];
}
NSInteger imgCount = [images count];
//set center view
[self loadImageIndex:newCenterPage atPosition:1];
//set left view
if (newCenterPage > 0){
[self loadImageIndex:newCenterPage-1 atPosition:0];
} else {
//its the first image, so the left one is the last one
[self loadImageIndex:imgCount-1 atPosition:0];
}
//set right view
if (newCenterPage < imgCount-1){
[self loadImageIndex:newCenterPage+1 atPosition:2];
} else {
//its the last image, so ther right one is the first one
[self loadImageIndex:0 atPosition:2];
}
}
3) Наконец, повторно отцентрируйте вид прокрутки к центру снова:
[scroll setContentOffset:CGPointMake(1 * viewWidth, 0)];
Надеюсь, это поможет, хотя "человек с планом" - мистер Кларк, который указал путь.
Gonso