首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用#选择器后,Swift Button崩溃

使用#选择器后,Swift Button崩溃
EN

Stack Overflow用户
提问于 2020-04-02 22:17:41
回答 3查看 103关注 0票数 0

我已经设法让文本字段验证工作,它不允许添加按钮是活动的,除非在文本框字段中有文本。

然而,现在当我按下add按钮时,应用程序就崩溃了。

我做了一些研究,看起来是因为:

选择器(自身,calarieSubmit.addTarget:#选择器(CalarieSubmitDidChange),用于:.editingChanged)

其然后将代码放置在存储器中的别处,并且不能被添加按钮访问。如果我将#选择器代码移出已加载的视图并放入控制器的顶部,则看不到calariesSubmitDidChange文本框。

有没有人知道代码需要放在哪里才能阻止崩溃,或者我是否需要重写代码?

谢谢!

**更新-很抱歉没有将代码复制到其中,我现在已经完成了以下操作:

代码语言:javascript
复制
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上崩溃。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-12 21:01:54

所以在所有这些之后,这个应用程序被证明是由于一个红色的IBOutlet而崩溃。一旦移除,应用程序就可以正常工作而不会崩溃。

票数 0
EN

Stack Overflow用户

发布于 2020-04-02 22:22:48

添加

代码语言:javascript
复制
 @objc func calarieSubmitDidChange(_ sender:UITextField)
票数 0
EN

Stack Overflow用户

发布于 2020-04-02 22:58:38

Swift 4.2

代码语言:javascript
复制
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
                }
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60993730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档