我正在教我自己快一个半星期。我正在尝试制作一个从英寸到厘米的转换器。我有两个文本区域,一个是英寸,一个是厘米。在你点击计算中键入其中一个时,它会为你提供英寸或厘米的转换。我遇到的问题是,如果你填写一个,然后你决定你宁愿看到另一个度量单位,数字仍然输入,按钮不起作用。如果用户决定使用其他字段,我该如何清除文本字段?
也不知道我上传的代码是否可行,但我宁愿一起摆脱转换按钮,所以当用户在单位或其他上键入时,它会立即填写下面的标签。这有可能吗?
这是迄今为止的代码。
import UIKit
class ViewController: UIViewController, UITextViewDelegate{
@IBOutlet weak var InchesField: UITextField!
@IBOutlet weak var CentimetersField: UITextField!
@IBOutlet weak var ConversionLabel: UILabel!
//Only let 1 decimal point
let numberFormatter: NumberFormatter = {
let nf = NumberFormatter()
nf.numberStyle = .decimal
nf.minimumFractionDigits = 0
nf.maximumFractionDigits = 1
return nf
}()
@IBAction func ConversionButton1(_ sender: AnyObject) {
if InchesField.text == "" || CentimetersField.text == "" {
//either inchfield or centimetersfield text is empty
ConversionLabel.text = String("Please enter a number")
}
if let text = InchesField.text, !text.isEmpty
{
//do something if it's not empty
let inch = Double(InchesField.text!)
let inCmConvertor = inch! * 2.54
ConversionLabel.text = String("\(inCmConvertor) Centimters")
} else
if let text = CentimetersField.text, !text.isEmpty
{
let centimeter = Double(CentimetersField.text!)
let cmInConvertor = centimeter! / 2.54
ConversionLabel.text = String("\(cmInConvertor) Inches")
}
}
}
答案 0 :(得分:2)
您要做的是在IBAction创建窗口中使用编辑更改事件为每个文本字段创建一个IBAction。
我测试了下面的代码并且有效:
@IBOutlet weak var InchesField: UITextField!
@IBOutlet weak var CentimetersField: UITextField!
@IBAction func InchesFieldChanged(_ sender: Any) {
CentimetersField.text = ""
}
@IBAction func CentimetersFieldChanged(_ sender: Any) {
InchesField.text = ""
}
不要复制并粘贴代码,只需手动创建IBActions,它就会简单得多。
祝你顺利进入Swift编程和iOS开发。