2012-12-12 31 views
0

我有一个应用程序,你有3个按钮,如果你按下一个按钮,三个按钮的按钮图像会改变,但按钮2和按钮3可能没有与按钮1相同的图片,而按钮3可能与图片没有相同的图片按钮2如何给每个按钮一个不同的图像?

我都试过,但没有奏效

 NSInteger imageIndex1 = arc4random_uniform(images.count); 
     NSInteger imageIndex2 = arc4random_uniform(images.count); 
     NSInteger imageIndex3 = arc4random_uniform(images.count); 

    if (imageIndex1 == imageIndex2) { 
     imageIndex2 = arc4random_uniform(images.count); 
    } 

    else if (imageIndex1 == imageIndex3 ) { 
     imageIndex3 = arc4random_uniform(images.count); 
    } 

     else if (imageIndex2 == imageIndex3 ) { 
      imageIndex3 = arc4random_uniform(images.count); 

    } 



    else 
     [self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal]; 
     [self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal]; 
     [self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal]; 
     imageIndex1 = imageIndex2; 
     imageIndex1 = imageIndex3; 
     imageIndex2 = imageIndex3; 
+0

而不是'图像[imageIndex2]'和'图像[imageIndex3]'使用'图像[imageIndex1]' –

+0

那么简单...... – Rajneesh071

回答

0

在这里,你在其他部分设置self.picture1映像,以便在第一任何条件真,那么self.picture1图像将不设置所以这个问题你也面临为每个按钮添加setImage的代码else部分,波纹管代码

 [self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal]; 
     [self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal]; 
     [self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal]; 
0

尝试......

if (imageIndex2 == imageIndex1) { 
      imageIndex2 = arc4random_uniform(images.count); 
    } 

    if (imageIndex3 == imageIndex1) { 
      imageIndex3 = arc4random_uniform(images.count); 
      } 


[self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal]; 
     [self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal]; 
     [self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal]; 
     imageIndex1 = imageIndex2; 
     imageInde 

x1 = imageIndex3; 
+0

对不起,它没有工作 – T1992

0

试试这个:

NSInteger imageIndex1 = arc4random_uniform(images.count); 
NSInteger imageIndex2 = arc4random_uniform(images.count); 
NSInteger imageIndex3 = arc4random_uniform(images.count); 

while (imageIndex2 == imageIndex1) { 
    imageIndex2 = arc4random_uniform(images.count); 
} 

while (imageIndex3 == imageIndex1) { 
    imageIndex3 = arc4random_uniform(images.count); 
} 


[self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal]; 
[self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal]; 
[self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal]; 
+0

抱歉,它没有工作 – T1992

0

我想我已经找到了解决办法。 这是现在的代码:

Boolean p1 =true; 
    Boolean p2 = true; 
    Boolean p3 = true; 


     NSInteger imageIndex1 = arc4random_uniform(images.count); 
     NSInteger imageIndex2 = arc4random_uniform(images.count); 
     NSInteger imageIndex3 = arc4random_uniform(images.count); 

    if (imageIndex1 == imageIndex2) { 
     p1 = false; 
     imageIndex2 = arc4random_uniform(images.count); 

    } 

    if(imageIndex1 == imageIndex3 ) { 
     p2 = false; 
     imageIndex1 = arc4random_uniform(images.count); 

    } 

     if (imageIndex2 == imageIndex3 ) { 
      p3 = false; 
      imageIndex3 = arc4random_uniform(images.count); 


    } 



    if(p1 == true && p2 == true && p3 == true) { 
     [self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal]; 
     [self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal]; 
     [self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal]; 
    } 
0

貌似这个另一份被封闭,一式两份。下面是答案:这个问题的目标是随机更改按钮上的图像。但问题是,将一个随机索引选入一个图像数组有时会生成当前索引(它是随机的,所以这发生在1/array.count概率上)。下面是排除给定索引的方法...

- (NSUInteger)randomUnsignedLessThan:(NSInteger)max excluding:(NSUInteger)exclude { 

    NSInteger firstTry = -1; 
    while (firstTry == exclude) firstTry = arc4random() % max; 
    return firstTry; 
} 

注意,这种方法将总是调用arc4random一次,需要1 + N 1/MAX的概率来电^ N,所以对于低范围,以及高性能要求,您可能会考虑使用不同的算法来排除一个索引。

相关问题