我已经设法让文本字段验证工作,它不允许添加按钮是活动的,除非在文本框字段中有文本。
然而,现在当我按下add按钮时,应用程序就崩溃了。
我做了一些研究,看起来是因为:
选择器(自身,calarieSubmit.addTarget:#选择器(CalarieSubmitDidChange),用于:.editingChanged)
其然后将代码放置在存储器中的别处,并且不能被添加按钮访问。如果我将#选择器代码移出已加载的视图并放入控制器的顶部,则看不到calariesSubmitDidChange文本框。


有没有人知道代码需要放在哪里才能阻止崩溃,或者我是否需要重写代码?
谢谢!
**更新-很抱歉没有将代码复制到其中,我现在已经完成了以下操作:
import UIKit
import Firebase
class ItemToAddViewController: UIViewController {
var finalName = ""
override func viewDidLoad() {
super.viewDidLoad()
addButton.isEnabled = false
show.text = "\(finalName)"
calarieSubmit.addTarget(self, action: #selector(calarieSubmitDidChange), for: .editingChanged)
}
@IBOutlet weak var button: UIButton!
@IBOutlet weak var show: UILabel!
@IBOutlet weak var calarieSubmit: UITextField!
@IBAction func calarieSubmitDidChange(_ sender: Any) {
//Validate Input Button
// print("\(calarieSubmit.text!)")
if calarieSubmit.text!.isEmpty {
addButton.isEnabled = false
} else {
addButton.isEnabled = true
}
}
@IBOutlet weak var addButton: UIButton!
@IBAction func addButton(_ sender: Any) {
let input = calarieSubmit.text
//Send New Item to Database
var ref: DatabaseReference!
ref = Database.database().reference()
ref.child("items").updateChildValues((["\(finalName)": "\(input!)"]))
let alert = UIAlertController(title: "Added!", message: "Item now added!", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: NSLocalizedString("Return", comment: "Default action"), style: .default, handler: { (action) -> Void in
_ = self.navigationController?.popViewController(animated: true)
}))
self.present(alert, animated: true, completion: nil)
//Move in once added or show error
}
}我尝试了下面的所有方法,在函数前面添加@objec,但没有成功。每次按下add按钮时,应用程序都会崩溃。但是,数据仍然会传递到数据库,然后在UIAlertController上崩溃。
发布于 2020-04-12 21:01:54
所以在所有这些之后,这个应用程序被证明是由于一个红色的IBOutlet而崩溃。一旦移除,应用程序就可以正常工作而不会崩溃。
发布于 2020-04-02 22:22:48
添加
@objc func calarieSubmitDidChange(_ sender:UITextField)发布于 2020-04-02 22:58:38
Swift 4.2
textfield.addTarget(self, action: #selector(ViewControllerr.textFieldDidChange(_:)), for: UIControl.Event.editingChanged)
@objc func textFieldDidChange(_ textField: UITextField) {
if txtfield.text != nil {
button enable
} else {
button false
}
}https://stackoverflow.com/questions/60993730
复制相似问题