Swift: 使用 UIButtons 作为 UIImages
Swift: Using UIButtons as UIImages
我正在和 Swift 一起开发骰子游戏。我想让玩家选择在点击 'dice' 时按住它一圈。因此,我想使用 UIButtons 作为骰子。我让骰子作为 UIImages 工作,现在我想将 UIImages 转移到 UIButtons。但是在执行此操作时出现错误:
Argument labels '(named:)' do not match any available overloads.
我有点无能,真的不知道如何解决这个问题。
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))
}
}
替换
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)
UIButton
没有使用参数 named:
的初始值设定项。根据声明为 @IBOutlet
的 dice1
和 dice2
变量猜测,您可能已经有了按钮,现在只想分配图像而不是创建新按钮:
dice1.setImage(UIImage(named: stenenArray[randomDiceIndex1]), for: .normal)
由于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
变量生成随机值 ,否则第一个滚动将始终为零。
我正在和 Swift 一起开发骰子游戏。我想让玩家选择在点击 'dice' 时按住它一圈。因此,我想使用 UIButtons 作为骰子。我让骰子作为 UIImages 工作,现在我想将 UIImages 转移到 UIButtons。但是在执行此操作时出现错误:
Argument labels '(named:)' do not match any available overloads.
我有点无能,真的不知道如何解决这个问题。
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))
}
}
替换
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)
UIButton
没有使用参数 named:
的初始值设定项。根据声明为 @IBOutlet
的 dice1
和 dice2
变量猜测,您可能已经有了按钮,现在只想分配图像而不是创建新按钮:
dice1.setImage(UIImage(named: stenenArray[randomDiceIndex1]), for: .normal)
由于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
变量生成随机值 ,否则第一个滚动将始终为零。