创建文字游戏

Creating a word game

我正在使用 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")
        }
    }

这个想法是用户必须一个接一个地点击一个字母,将它们移向空标签并找出正确的词,正如你所看到的,我把每个字母都做成一个按钮,每个字母都是空的 space 一个标签,但想知道是否有比为每个字母创建 26 个按钮更好的方法。将所有按钮链接到一个函数是行不通的,因为那样我将不得不依赖 sender.tag,我无法将其传递给我的函数来移动字母。那么我应该继续我正在做的事情还是有更好的方法来做到这一点?

如果你制作自定义 UIButton,你可以向按钮添加额外的属性,然后将 @IBAction 的发送者更改为你的自定义 class,然后只需将按钮传递给你的 moveLetter,它就可以知道是什么根据按钮提供的信息进行操作。然后他们都可以共享相同的按钮按下功能

然后,如果您的按钮 subclass 有一个名为 ButtonLetter 的 @属性 字符串,您可以在情节提要中定义它的正确值,而不是在所有按钮的代码中手动执行通过给它一个运行时属性,如下面的屏幕截图所示

或者你可能很懒,只是获取按钮的文本并阅读它是什么字母,但我会说这是一种更合适的处理方式,因为这可以适用于任何类型的按钮也许按钮上的文本实际上并不是您在按下按钮时想要用来进行一些计算的值,但在您的情况下恰好是这样。