我想将图像应用到我的12个UIButton中的3个随机UIButton中。
修改
这是工作代码;
let buttons:NSArray = [button1, button2, button3, button4, button5, button6, button7, button8, button9, button10, button11, button12].shuffle()
buttons[0].setImage(UIImage(named: "code1"), forState: .Normal)
buttons[1].setImage(UIImage(named: "code1"), forState: .Normal)
buttons[2].setImage(UIImage(named: "code1"), forState: .Normal)
工作洗牌功能;
extension CollectionType {
func shuffle() -> [Generator.Element] {
var list = Array(self)
list.shuffleInPlace()
return list
}
}
extension MutableCollectionType where Index == Int {
mutating func shuffleInPlace() {
if count < 2 { return }
for i in 0..<count - 1 {
let j = Int(arc4random_uniform(UInt32(count - i))) + i
guard i != j else { continue }
swap(&self[i], &self[j])
}
}
}
答案 0 :(得分:3)
这里有一个不同的想法:将所有12个UIButtons
抛出一个数组,将该数组洗牌并操纵前三个元素:
var buttons = [button1, button2, ..., button12]
buttons.shuffled()
// Do whatever with buttons[0] - button[2]
buttons[0].setImage(UIImage(named: "..."), forState: .Normal)
buttons[1].setImage(UIImage(named: "..."), forState: .Normal)
buttons[2].setImage(UIImage(named: "..."), forState: .Normal)
答案 1 :(得分:2)
试试这个:
if (pick3numbers[0] == 1 || pick3numbers[1] == 1 || pick3numbers[2] == 1) {
//your code here
}
Swift的OR运算符有两个垂直条而不是一个。
编辑: 根据您的编辑和@ Eendje的想法,请尝试:
for i in 1...12 {
if pick3numbers.contains(i) {
//your code
}
}
答案 2 :(得分:1)
因为数组是从0开始的,所以索引12超出范围(你只有12个对象,索引0-11)
删除在buttons[12]
上设置图片的行,它应该有效。