這是基於我的代碼該片段的解釋的簡要說明。
顯然,在執行方法之前,我們不知道,如果用戶鍵入任何東西,或沒有,因爲該方法可能已經被調用,因此UserIsInTheMiddleOfTyping
可能是要麼true
或false
var UserIsInTheMiddleOfTyping = false
當他在計算器上點擊一個數字時,觸發方法TouchedDigit(_ sender: UIButton)
。
一個新的常數digit
創建並設定爲發送者的標題這是UIButton
一個實例(該標題屬性是該按鈕的顯示名稱,例如1,2,3 ...)
一個新的常數CurrentTextinDisplay
創建並設置爲我所想的內容是一個UITextField
(通過拆它,因此不爲空)
讓CurrentTextinDisplay = Display.text!
如果用戶打字什麼的方法被調用(非常糟糕的代碼實現,雖然)之前,我們追加之前創建的Display
實例,它(我猜)持有已輸入的數字內容的digit
不變。
如果UserIsInTheMiddleOfTyping { Display.text = CurrentTextinDisplay +數字 }
否則,如果用戶輸入第一個數字,WHE設置Display
實例來保存該第一digit
else { Display.text = digit }
在返回方法將UserIsInTheMiddleOfTyping
設置爲true之前。 (下次該方法被觸發時,我們將確定輸入if語句並追加新的數字。)
UserIsInTheMiddleOfTyping =真
我會親自縮小代碼如下:
//There is no need to save in a variable if the user is in the middle of typing
//Because he will be in this state only when the method is triggered, therefore just shrink as follows:
@IBAction func TouchedDigit(_ sender: UIButton) {
//Safe unwrapping of sender.currentTitle:
if let actualDigit = sender.currentTitle {
//Safe unwrapping of Display.text:
if let actualText = Display.text {
Display.text = actualText + actualDigit
}
}
}
希望這有助於,如果有標記爲正確的問題。
再見
謝謝Albert。這非常有幫助,我感謝你給時間來解釋它非常詳細。我不知道他們爲什麼要投我的問題,就像有一天他們不是初學者。但是非常感謝Albert。 –
很高興我對你很有幫助。忘記別人,做你自己。下次嘗試更深入地描述您的問題。 –