作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 UIKit
创建一个文字游戏,我想为用户呈现整个字母表以解决这个难题,这是我的代码:
var emptyPos = [0]
@IBOutlet var pos1: UILabel!
@IBOutlet var pos2: UILabel!
@IBOutlet var pos3: UILabel!
@IBOutlet var pos4: UILabel!
@IBAction func btnA(sender: UIButton) {
letters(sender)
}
@IBAction func btnB(sender: UIButton) {
letters(sender)
}
@IBAction func btnC(sender: UIButton) {
letters(sender)
}
@IBAction func btnD(sender: UIButton) {
letters(sender)
}
func moveLetter (pos: UILabel, btn: UIButton) {
UIView.animateWithDuration(0.5, animations: { () -> Void in
btn.center = pos.center
})
}
func letters (btn: UIButton) {
switch emptyPos.count {
case 1:
moveLetter(pos1, btn: btn)
emptyPos.append(0)
println(emptyPos)
case 2:
moveLetter(pos2, btn: btn)
emptyPos.append(0)
println(emptyPos)
case 3:
moveLetter(pos3, btn: btn)
emptyPos.append(0)
println(emptyPos)
case 4:
moveLetter(pos4, btn: btn)
emptyPos.append(0)
println(emptyPos)
default:
println("Error")
}
}
这个想法是用户必须一个接一个地点击一个字母,将它们移向空白标签并找出正确的词,正如你所看到的,我将每个字母设为一个按钮,将每个空白区域设为一个标签,但想知道是否有比为每个字母创建 26 个按钮更好的方法。将所有按钮链接到一个函数是行不通的,因为那样我将不得不依赖 sender.tag
,我无法将它传递给我的函数来移动字母。那么我应该继续我正在做的事情还是有更好的方法来做到这一点?
最佳答案
如果你制作一个自定义的 UIButton,你可以为按钮添加额外的属性,然后将 @IBAction 的发送者更改为你的自定义类,然后只需将按钮传递给你的 moveLetter,它就可以根据信息知道要做什么由按钮提供。然后他们都可以共享相同的按钮按下功能
然后如果你的按钮子类有一个名为 ButtonLetter 的 @property 字符串,你可以在 Storyboard中定义它的值是什么,而不是像屏幕截图中那样通过给它一个运行时属性在所有按钮的代码中手动执行它下面
或者你可能会偷懒,只是获取按钮的文本并阅读它是什么字母,但我会说这是一种更合适的处理方式,因为这可以适用于任何类型的按钮按钮上的文本实际上并不是您想要在按下按钮时用于进行一些计算的值,但在您的情况下恰好是这样。
关于ios - 创建文字游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31444330/
我是一名优秀的程序员,十分优秀!