Мне удалось запустить проверку текстового поля, которая не позволяет активировать кнопку добавления, если в текстовом поле нет текста.
Однако теперь, когда я нажимаю кнопку добавления, приложение вылетает.
Я провел некоторое исследование, и похоже, что оно из-за:
calarieSubmit.addTarget (self , action: #selector (calarieSubmitDidChange), для: .editingChanged)
, который затем помещает код в другое место в памяти и недоступен для кнопки добавления. Если я переместлю код #selector из загруженного представления в верхнюю часть контроллера, текстовое поле 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
}
}
Я попробовал все ниже с добавлением @ obje c перед функцией, но нет удачи. Приложение вылетает при каждом нажатии кнопки добавления. Однако данные по-прежнему передаются в базу данных, а затем происходит сбой на UIAlertController.