在下面的代码,fahrenheitFieldEditingChanged()如预期,如果它有参数为什么我的IBAction函数需要一个参数?
textField: UITextField
如果我删除从功能参数,它似乎并没有被称为是所谓的,即使我删除的连接从旧的函数原型中重新创建新的函数原型。我知道它不会被调用,因为我加了这条线在函数的开始,更改不会不管我做什么发生:
celsiusLabel.text = "?????"
请帮助?这是我的代码。 (为什么我关心这个参数呢?我希望我可以引用我的IBOutlet textField,它应该和传递给编辑更改函数的对象相同,因为我的故事板只有一个UITextField。)
import Foundation
import UIKit
class ConversionViewController: UIViewController {
@IBOutlet var celsiusLabel: UILabel!
@IBOutlet var textField: UITextField!
var fahrenheitValue: Double? {
didSet {
updateCelsiusLabel()
}
}
var celsiusValue: Double? {
if let value = fahrenheitValue {
return (value - 32) * 5/9
}
else {
return nil
}
}
func updateCelsiusLabel() {
if let value = celsiusValue {
celsiusLabel.text = "\(value)"
}
else {
celsiusLabel.text = "???"
}
}
@IBAction func fahrenheitFieldEditingChanged() {
if let text = textField.text {
if let value = Double(text) {
fahrenheitValue = value
}
else {
fahrenheitValue = nil
}
}
}
@IBAction func dismissKeyboard(sender: AnyObject) {
textField.resignFirstResponder()
}
}
“我知道这不是被称为”我不认为你知道这一点。你有一个调试器。调试!在“fahrenheitFieldEditingChanged”主体的开始处放置一个断点,并查看当您在该字段中输入内容时是否触击它。如果你这样做,它被称为。 :) – matt
好点。我检查了调试器,现在我可以完全肯定地说它没有被调用。 – MackTuesday
我已经解决了这个问题,结果表明这个行为对我的项目非常特别。我应该删除这个问题吗? – MackTuesday