编辑:我想我在这里问了一些非常错的事,我很抱歉。我正在做的,是一个老虎机的模拟,但我不认为我在UIPICKERVIEW中放置250(50 * 5)个图像是明智的(只是不想侮辱我自己)没有理由这样做,我现在的想法是每个列只使用不同顺序的6个图像然后当我旋转时,一次又一次地在30(6 * 5)个图像上旋转并旋转它们,这将给出相同的使用较少的资源,效果好吧?我看不出我在想什么,谢谢大家的答案
在iOS中实现复杂的UIPickerView(5个组件),我坚持这个问题......
我有5个NSArrays(对于选择器中的每个组件......不可变)我有6个图像。
我需要使用一组图像初始化每个数组,这将为50个图像填充数组,在set之后设置(我猜测某种for循环将运行8次并用另外2个图像填充数组在最后?)
在每个数组中,图像需要采用不同的顺序,但同样,对于同一个数组,该集必须始终相同。
当我说一个集合时,我的意思是我需要一次又一次地将图像放在同一个顺序中,而不是它们在另一个阵列或类似的东西中......
任何人都可以帮忙吗?
10倍, 埃雷兹
答案 0 :(得分:1)
不确定我理解这个问题,但是,如果我这样做了,你可以这样做:
NSArray *set = [NSArray arrayWithObjects:[UIImage imageNamed:@"img1.png"],/* all the images */ , nil];
NSMutableArray *tmp = [[NSMutableArray alloc] init];
for (int i = 0; i<50; i++) {
[tmp addObject:[set objectAtIndex:(i%6)]];
}
然后您可以将tmp
用作普通NSArray
,或执行类似
NSArray *result = [NSArray arrayWithArray:tmp];
PS。完成后不要忘记释放tmp。
答案 1 :(得分:1)
UIImage *image;
int randomIndex;
NSCountedSet *set = [[NSCountedSet alloc] initWithCapacity:50];
NSMutableArray *arrays = [[NSMutableArray alloc] initWithCapacity:5];
for ( int i = 0; i < 5; i++ ) {
while ( [set count] < 50 ) {
randomIndex = arc4random() % 6;
image = [images objectAtIndex:randomIndex];
switch ( [set count] ) {
case 48:
case 49:
if ( [set countForObject:image] < 9 ) {
[set addObject:image];
}
break;
default:
if ( [set countForObject:image] < 8 ) {
[set addObject:image];
}
}
}
[arrays addObject:[set allObjects]];
[set removeAllObjects];
}
[set release];
这个想法是使用一个计数集并获得添加到它的元素的数量。这样我们就可以跟踪被添加的对象。