Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uitableview 使用重复结束页的无限UIScrollView_Uitableview_Uiscrollview - Fatal编程技术网

Uitableview 使用重复结束页的无限UIScrollView

Uitableview 使用重复结束页的无限UIScrollView,uitableview,uiscrollview,Uitableview,Uiscrollview,我正在使用重复的结束页实现无限UIScrollView。具体来说,我有3个ViewController,我将其视图作为子视图添加到UIScrollView内容中。因此,实际上,UIScrollView内容如下所示(V1=Viewcontroller的视图1,V2,Viewcontroller的视图2,V3=Viewcontroller的视图) UIScrollView的内容: [V3][V1][V2][V3][V1] 当用户从V2向右滚动到V3到V1时,我使用“scrollRectToVisib

我正在使用重复的结束页实现无限UIScrollView。具体来说,我有3个ViewController,我将其视图作为子视图添加到UIScrollView内容中。因此,实际上,UIScrollView内容如下所示(V1=Viewcontroller的视图1,V2,Viewcontroller的视图2,V3=Viewcontroller的视图)

UIScrollView的内容: [V3][V1][V2][V3][V1]

当用户从V2向右滚动到V3到V1时,我使用“scrollRectToVisible”将ScrollView切换到第二个位置的V1,使它看起来无穷无尽。同样,当用户从V2向左滚动到V1到V3时,我将滚动视图从第二个位置移到最后一个位置的V3

代码方面,这看起来像这样:

- (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];  
        }
    }
 } 
我这里的问题是ViewController中有UITableView。例如,V1有一个UITableView。如果用户已经转到V1的UITableView的第10行,我相信我需要在scrollview的V1视图中同步UITableView的状态

用户只会在一瞬间看到最右边的[V1],或者只将scrollview拖到一半,但是如果状态不同步,用户仍然会注意到它不是同一个TableView

有办法解决这个问题吗?我想到的一种方法是保存状态,然后更新所有V1,以便它们显示相同的内容

是否可能有两个UITableView对象以某种方式自动相互镜像

谢谢大家!

你说:

如果用户已经转到V1的UITableView的第10行,我相信我需要在scrollview的V1视图中同步UITableView的状态

这意味着您拥有同一V1 ViewController的多个实例

是否可能有两个UITableView对象以某种方式自动相互镜像

是的,在NSUserDefaults上使用NSNotificationCenter应该可以做到这一点,但也许您可以做一些更有效的事情

而不是使用

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender
你可以试试看

- (void)layoutSubviews
在特定条件下(通常是移动已从屏幕上完全消失的VC),仅重新安排3个VC(每个类一个实例)。因此,您将节省2个VC,并且不必处理同一类的同步实例

苹果发布了一段关于无限滚动视图的精彩视频(WWDC 2011,第104期-高级滚动视图技术)


希望这有帮助。祝你好运。

谢谢,我会试试这个!