2015-06-24 50 views
-2

我的代碼通過我的Xcode項目中的「太快」選項運行時出現問題(在我的iPhone上測試時)。我有兩個按鈕,可以控制從常規[默認選項]到更亮或最多更改一定量的牛奶。當我觸摸將牛奶量改爲光照時,它可以正常工作。然而,從這個選項中,當我點擊向上箭頭將牛奶量改回常規時,它會變爲常規,然後變爲額外的,因爲代碼正在如此快速地執行。這有點難以通過措辭來解釋,但我試圖弄清楚如何在每次迭代時停止流程,而不會一直跳到流水線本身的末端。我會在下面發佈我的代碼,但請告訴我,如果您需要更多解釋以幫助解決問題!Xcode運行「太快」

@IBAction func changeMilkAmountRight(sender: UIButton) { 
    if milkAmount == 1 { 
     milkAmount = 2 
     milkAmountLabel.text = String("regular") 
     updateLabels() 
    } 
    if milkAmount == 2 { 
     milkAmount = 3 
     milkAmountLabel.text = String("extra") 
     updateLabels() 
    } 
} 

@IBAction func changeMilkAmountLeft(sender: UIButton) { 
    if milkAmount == 3 { 
     milkAmount = 2 
     milkAmountLabel.text = String("regular") 
     updateLabels() 
    } 
    if milkAmount == 2 { 
     milkAmount = 1 
     milkAmountLabel.text = String("light") 
     updateLabels() 
    } 
} 
+7

看起來像代碼將總是執行兩個如果塊。在「左」情況下,它將更改3和2,然後執行將2更改爲1.如果將每個函數中的第二個「if」更改爲「else if」,則它只會執行一次。 –

+0

@BrianWalker是正確的。方法中的兩個'if'塊都將始終執行。如果你使用調試器來遍歷代碼,你會自己看到這個。 –

+0

這似乎工作非常好!感謝您的建議! – Seth

回答

1

你想用else if所以僅一個街區可以運行,比如:

if milkAmount == 3 { 
    milkAmount = 2 
    milkAmountLabel.text = String("regular") 
    updateLabels() 
} else if milkAmount == 2 { 
    milkAmount = 1 
    milkAmountLabel.text = String("light") 
    updateLabels() 
} 
0

您需要使用else if

把你的代碼在這裏:

if milkAmount == 1 { 
    milkAmount = 2 
    milkAmountLabel.text = String("regular") 
    updateLabels() 
} 
if milkAmount == 2 { 
    milkAmount = 3 
    milkAmountLabel.text = String("extra") 
    updateLabels() 
} 

想象一下,進入第一塊。 milkAmount最初等於1,但輸入了代碼塊並將其更改爲2。代碼塊退出後,然後檢查milkAmount是否等於2(它是),然後更改爲3

相反,在第二次的使用else if if語句,就像這樣:現在

if milkAmount == 1 { 
    milkAmount = 2 
    milkAmountLabel.text = String("regular") 
    updateLabels() 
} 
else if milkAmount == 2 { 
    milkAmount = 3 
    milkAmountLabel.text = String("extra") 
    updateLabels() 
} 

,如果執行的第一個塊,你的代碼甚至沒有去檢查,如果milkAmount等於2,你的問題將得到解決。

考慮閱讀關於在Swift中的if語句:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html