我正在与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))
}
}
答案 0 :(得分:5)
UIButton
没有使用参数named:
的初始值设定项。从您的dice1
和dice2
变量声明为@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)
由于dice1
和dice2
是 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
变量生成随机值,否则第一次滚动将始终为零。