2015-10-11 62 views
-2

我的应用程序有一个按钮,按钮使得标签的顺序从5到1(5..4..3..2..1)。我想要的是当数字达到0时再次返回5.我已经尝试过,但是不起作用。有没有人有任何提示?当数字= 0时返回数字

@IBOutlet weak var NbrLabel: UILabel! 

var Nbr = 5 
override func viewDidLoad() { 
    super.viewDidLoad() 
    if Nbr == 0 { 
     Nbr == 5 
     NbrLabel.text = "\(Nbr)" 

    } 
} 

@IBAction func ICButton(sender: UIButton) { 
    Nbr -= 1 
    NbrLabel.text = "\(Nbr)" 
} 
+0

该分配应该是'Nbr = 5',删除双'='! – luk2302

+0

*“不起作用”* - 然后学习如何调试程序。 –

+0

变量应以小写字母开头:'nbr','nbrLabel'。他们上面蓝色的原因是语法突出显示他们认为他们是类名。 – vacawama

回答

1

这应该工作:

@IBOutlet weak var NbrLabel: UILabel! 

var Nbr = 5 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

} 

@IBAction func ICButton(sender: UIButton) { 
    Nbr -= 1 

    if Nbr == 0 { 

     Nbr = 5 
    } 

    NbrLabel.text = "\(Nbr)" 
} 

你跟编程开始?

+1

您可能希望在viewDidLoad中保留'NbrLabel.text =“\(Nbr)”',以便标签在按下按钮之前获取一个值。 – vacawama

+0

@DavidSundström,我只留下评论。用户t4nhpt提供了答案。 – vacawama

+0

感谢您的回答,是的,我是新的:) –

2

应该在IBAction方法中检查等效于最大数量(在你的情况下为5)。在viewDidLoad方法中,您应该只设置标签,并在视图加载后显示初始值(如果您的应用程序启动时有单个视图应用程序)。尝试这种变异:

let NbrMaxValue = 5 

class ViewController: UIViewController { 
    @IBOutlet weak var NbrLabel: UILabel! 
    var Nbr = NbrMaxValue 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     NbrLabel.text = "\(Nbr)" 
    } 

    @IBAction func ICButton(sender: UIButton) { 
     --Nbr 
     if Nbr == 0 { Nbr = NbrMaxValue } 
     NbrLabel.text = "\(Nbr)" 
    } 
} 
0

嗯..我知道这有一个公认的答案已经但是倒计数可以被认为是 - 为此而使用if语句,为什么不只是增加一个计数器

5 - 0 = 5 
5 - 1 = 4 
5 - 2 = 3 
5 - 3 = 2 
5 - 4 = 1 

并使用模数表达式,如 -

var counter = 4 // initial value to start with 

var value = 5 - ((counter + 1) % 5) // execute this line on button press 

注 - 这只是一个示例来演示向后计数而不使用if语句检查零。