xcode- 具有多种情况的重构开关。

标签 xcode swift switch-statement

所以基本上我想创建一个键盘,当用户点击一个字母时应该发生一些事情:

 @IBAction func letterBtn(sender: UIButton) { // All the letter buttons are linked to this func.

        switch sender.currentTitle! {

        case "A":
            moveLetters(sender)
        case "B":
            moveLetters(sender)
        case "C":
            moveLetters(sender)
        case "D":
            moveLetters(sender)
        case "E":
            moveLetters(sender)
        case "F":
            moveLetters(sender)
        case "G":
            moveLetters(sender)


        default :

            println("Error")
        }

    }
func animateLetter (pos: UILabel, btn: UIButton) { // Make the letter move towards a label.

        UIView.animateWithDuration(0.5, animations: { () -> Void in

            btn.center = pos.center
        })
    }

    func moveLetters (btn: UIButton) { // Determine which label the pressed letter should move towards.

        switch emptyPos.count {

        case 1:

            animateLetter(pos1, btn: btn)
            emptyPos.append(0)

        case 2:

            animateLetter(pos2, btn: btn)
            emptyPos.append(0)

        case 3:

            animateLetter(pos3, btn: btn)
            emptyPos.append(0)

        case 4:

            animateLetter(pos4, btn: btn)
            emptyPos.append(0)



        default:
            println("Error")
        }
    }

我发现自己使用多个 switch case,它们在 2 个不同的函数中基本上做同样的事情,我想知道是否有比对整个字母表以及我的其他函数使用 26 个 case 更好的方法。

最佳答案

首先,你可以combine案例:

switch sender.currentTitle! {
case "A", "B", "C": ... etc
    // do something

其次,switch语句允许intervals ,您可以通过查看按钮标题的第一个字符从中获益:

switch sender.currentTitle![0] {
case "A"..."Z":
    // do something
}

至于你的其他问题,我会给每个标签一个标签(pos1.tag = 1,pos2.tag = 2)等,并使用 viewWithTag获取正确标签的函数。

关于xcode- 具有多种情况的重构开关。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31505895/

相关文章:

java - 如何在jsp中使用查询获取用户角色?

c++ - XCode 无法编译 Poco 项目, undefined symbol

iphone - 为动态表单元格添加 header 和 NSArray

ios - 没有事件和启用的视频连接

iOS 10 UserNotifications 背景模式下的自定义声音

php - 在 PHP 中使用多个 elseif 嵌套循环的替代方法是什么

c++ - 开关/外壳内的开关/外壳

ios - 如何让clang只在发布时才编译文件?

ios - Swift JSON 解析并打印数组中的指定值

iOS 使用 Swift 文件作为第一个 View