【发布时间】:2018-01-22 04:14:41
【问题描述】:
我想知道如何为用户默认值做一个 switch-case/任何好的语句,而不是使用 if-else,因为从我的代码中可以看出,我使用了 3 个 if 语句,这有点多余并且丑陋。 此视图控制器的目的是用于“选卡”游戏,用户每次可以选择 3 张卡,如果他/她选择了一张卡,他们将无法再次选择该特定卡。
import UIKit
class ViewController: UIViewController {
@IBOutlet var buttona: UIButton!
@IBOutlet var buttonb: UIButton!
@IBOutlet var buttonc: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
if (UserDefaults.standard.integer(forKey: "dissapear") == 1)
{
buttona.setImage(UIImage(named: "wildcardbackingblack.png"), for: .normal)
buttona.isEnabled = false
}
if (UserDefaults.standard.integer(forKey: "dissapear2") == 1)
{
buttonb.setImage(UIImage(named: "wildcardbackingblack.png"), for: .normal)
buttonb.isEnabled = false
}
if (UserDefaults.standard.integer(forKey: "dissapear3") == 1)
{
buttonc.setImage(UIImage(named: "wildcardbackingblack.png"), for: .normal)
buttonc.isEnabled = false
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func Button1(_ sender: Any) {
UserDefaults.standard.set(1, forKey:"dissapear")
self.performSegue(withIdentifier: "show", sender: nil)
}
@IBAction func Button2(_ sender: Any) {
UserDefaults.standard.set(1, forKey:"dissapear2")
self.performSegue(withIdentifier: "show", sender: nil)
}
@IBAction func Button3(_ sender: Any) {
UserDefaults.standard.set(1, forKey:"dissapear3")
self.performSegue(withIdentifier: "show", sender: nil)
}
}
【问题讨论】:
-
你重复自己太多了。将常用代码提取到函数中,循环遍历
[(buttona, "dissapear"), (buttonb, "dissapear2"), (buttonc, "dissapear3")],并调用它 -
@Alexander 你是怎么做到的?我对迅速道歉还是很陌生
标签: ios swift xcode switch-statement