Swift:使用UIButtons作为UIImages

时间:2018-05-28 07:23:13

标签: ios swift uibutton uiimage

我正在与Swift进行骰子游戏。我想让玩家选择拿一个骰子'当他们点击它时转弯。因此,我想使用UIButton作为骰子。我得到了骰子作为UIImages工作,现在我想将UIImages转移到UIButtons。但在这样做的过程中我遇到了一个错误:

  

参数标签'(名称:)'不匹配任何可用的重载。

我有点无能为力,并不知道如何解决这个问题。

import UIKit

class ViewController: UIViewController {
@IBOutlet weak var dice1: UIButton!
@IBOutlet weak var dice2: UIButton!

let stenenArray = ["Steen1, Steen2, Steen3, Steen4, Steen5, Steen6"]

var randomDiceIndex1 : Int = 0
var randomDiceIndex2 : Int = 0

override func viewDidLoad() {
    super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}

@IBAction func buttonPressed(_ sender: Any) {
    updateDiceImages()
}


func updateDiceImages(){
    dice1 = UIButton(named: stenenArray[randomDiceIndex1])
    dice2 = UIButton?(named: stenenArray[randomDiceIndex2])

    randomDiceIndex1 = Int(arc4random_uniform(6))
    randomDiceIndex2 = Int(arc4random_uniform(6))
}
}

3 个答案:

答案 0 :(得分:5)

UIButton没有使用参数named:的初始值设定项。从您的dice1dice2变量声明为@IBOutlet进行猜测,您可能已经拥有按钮,现在只想分配图像而不是创建新按钮:

dice1.setImage(UIImage(named: stenenArray[randomDiceIndex1]), for: .normal)

答案 1 :(得分:3)

替换

dice1 = UIButton(named: stenenArray[randomDiceIndex1])
dice2 = UIButton?(named: stenenArray[randomDiceIndex2]) 

dice1.setImage(UIImage(named: stenenArray[randomDiceIndex1]), for: .normal)
dice2.setImage(UIImage(named: stenenArray[randomDiceIndex2]), for: .normal)

答案 2 :(得分:1)

由于dice1dice2 IBOutlets ,我认为无需重新初始化它们。

即使UIButton(named: ...)似乎很奇怪!

那么你应该做什么而不是按钮的奇怪初始化:

dice1 = UIButton(named: stenenArray[randomDiceIndex1])
dice2 = UIButton?(named: stenenArray[randomDiceIndex2])

是使用setImage(_:for:)方法为每一个设置一个图像:

dice1.setImage(UIImage(named: stenenArray[randomDiceIndex1]), for: .normal)
dice2.setImage(UIImage(named: stenenArray[randomDiceIndex2]), for: .normal)

<强>更新

您似乎需要将updateDiceImages()实现为:

func updateDiceImages() {
    randomDiceIndex1 = Int(arc4random_uniform(6))
    randomDiceIndex2 = Int(arc4random_uniform(6))

    dice1 = UIButton(named: stenenArray[randomDiceIndex1])
    dice2 = UIButton?(named: stenenArray[randomDiceIndex2])
}

这意味着您应该在设置UIButtons图像之前为randomDiceIndex变量生成随机值,否则第一次滚动将始终为零。