我有一个UIScrollView
和五个UIViewController
的A,B,C,D,E。
要在滚动视图中显示的UIViewController
视图的顺序取决于某些先决条件(例如,有一天它可能是B,A,E,D,C和下一个E,A,D,B, C等等。
如何跟踪要显示的UIViewController
(如每个UIViewController
的标签,可以存储在数组中并更新)?
是否可以以上面显示的动态方式为滚动视图分配视图?
答案 0 :(得分:0)
你想找到一种方法来排列5个视图控制器吗? 也许它有助于使用素数的属性。
这取决于你想要的排列数。 但由于只有5个视图控制器,所以不能超过5个! = 120个排列 什么是好的5是它是一个素数
所以如果你计算(n * a)%5,其中a是从0到4的常数,n是从1到5的变量,你得到一个这样的表:
a==0, 0,0,0,0,0
a==1, 1,2,3,4,0
a==2, 2,4,1,3,0
a==3, 3,1,4,2,0
a==4, 4,3,2,1,0
正如您所见,这是完全不同的排列,其中每个数字只出现一次。
所以,如果你想要120个排列
只应用一个常数b(从0到4),并计算(n * a + b)%5
那么你将获得前一个结果的5倍,即125,但是有一些重复,那么最终的结果将是120个排列。
所以,你唯一要做的就是用你的先决条件确定a和b
并应用以下代码:
int result = (n*a + b)%5;
static UIView *addedView = nil;
if(addedView != nil)
[addedView removeFromSuperview];
switch(result)
{
case 0:
[self.scrollView addSubview:VCA.view];
addedView = VCA.view;
break;
case 1:
[self.scrollView addSubview:VCB.view];
addedView = VCB.view;
break;
//and so on...
}
hope it helps