2017-10-15 9 views
-2

長いif文を作成する代わりに、関数を使用して "数値"をチェックし、正しいUIImageViewを返す方法を探しています。正しいUIImageViewを返す方法

randNumber = Int(arc4random_uniform(UInt32(array.count)))  

      if number == 1{ 
      image1.image = UIImage(named: array[randNumber]) 
      number += 1 
     } else if number == 2{ 
      image2.image = UIImage(named: array[randNumber]) 
      number += 1 
     } else if number == 3{ 
      image3.image = UIImage(named: array[randNumber]) 
      number += 1 
     } else if number == 4{ 
      image4.image = UIImage(named: array[randNumber]) 
      number += 1 
     } 

を数が3である場合には、画像3は

誰もが何か提案を持って返されます。ここで私は、現在使用しているコードはありますか?

+0

ですから、コードを短くしたいですか? – Sweeper

答えて

1

コードを短縮する方法です。

は、あなたの画像ビューのうちの配列を作成します。

let imageViewArray = [image1, image2, image3, image4] 

があなたの乱数を生成します。

randNumber = Int(arc4random_uniform(UInt32(array.count))) 

はここで魔法が来ます。使用するnumberの値とあなたのイメージ図との対応は次のようにあるので:

number ImageView 
1   image1 
2   image2 
3   image3 
4   image4 

とあなたのイメージを望む配列のインデックスの対応は、このようなものです:私たちはちょうど必要

index  ImageView 
0   image1 
1   image2 
2   image3 
3   image4 

numberから1を引いて、配列の添字に一致させます。これは、我々は我々が望むイメージビューにアクセスするには、この表現を使用できることを意味します

imageViewArray[number - 1] 

全体の行は次のようになります。

imageViewArray[number - 1].image = UIImage(named: array[randNumber]) 
+0

助けてくれてありがとう、これが私が探していたものです。私は前にこれを試しました。あなたのコードを貼り付けるときに同じエラーが発生しました: "タイプ 'Stringの値にメンバ' image 'がありません" – Gjeruldsen

+0

'image1'と他のイメージビューを' UIImageView'と宣言してもよろしいですか? @Gjeruldsen – Sweeper

+0

@IBOutlet weak var image1:UIImageView! – Gjeruldsen

関連する問題