【问题标题】:Button activated when date picker and text field are set in Swift在 Swift 中设置日期选择器和文本字段时激活按钮
【发布时间】:2020-08-24 11:37:19
【问题描述】:

我想实现一个在设置文本字段和日期选择器时激活按钮的功能。

日期选择器的值转到标签,我通过更改标签值检查了按钮。

但是,在我实现的其他功能中,如果使用单例对象弹出导航并在返回时保存值,如果通过标签更改检查按钮,则不会激活按钮,因为它是与单例重复,或者即使只设置了电话号码。碰巧按钮被激活了。

那么,除了更改标签之外,有没有办法在日期选择器本身更改值时捕获它?

import UIKit

class ThirdViewController: UIViewController {
    
    lazy var dateFormatter: DateFormatter = {
        let date = DateFormatter()
        date.dateStyle = .medium
        date.timeStyle = .none
        return date
    }()
    
    @IBOutlet weak var dateLabel: UILabel!
    @IBOutlet weak var numberTextField: UITextField!
    @IBOutlet weak var datePicker: UIDatePicker!
    @IBOutlet weak var signUpButton: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        numberTextField.addTarget(self, action: #selector(editingChanged(_:)), for: .editingChanged)
        numberTextField.text = UserInformation.userInformationSingleton.userNumber
        dateLabel.text = UserInformation.userInformationSingleton.dateLabel
    }
    
    @objc func editingChanged(_ textField: UITextField) {
        if textField.text?.count == 1 {
            if textField.text?.first == " " {
                textField.text = ""
                return
            }
        }
        toggleButton()
    }
    
    func toggleButton() {
        guard
            let textField = numberTextField.text, !textField.isEmpty,
            dateLabel.text != ""
            else {
                signUpButton.isEnabled = false
                return
        }
        signUpButton.isEnabled = true
    }
    
    @IBAction func datePickerValueChanged(_ sender: UIDatePicker) {
        dateLabel.text = dateFormatter.string(from: sender.date)
        toggleButton()
    }
    
    @IBAction func cancelButton(_ sender: UIButton) {
        self.dismiss(animated: true, completion: nil)
        UserInformation.userInformationSingleton.userID = nil
        UserInformation.userInformationSingleton.userNumber = nil
        UserInformation.userInformationSingleton.dateLabel = nil
    }
    
    @IBAction func tappedPreviousButton(_ sender: UIButton) {
        self.navigationController?.popViewController(animated: true)
    }
    
    @IBAction func tappedSignUpButton(_ sender: UIButton) {
        self.dismiss(animated: true, completion: nil)
    }
}


https://i.stack.imgur.com/a1GVc.png

感谢阅读!!

【问题讨论】:

    标签: ios swift date button datepicker


    【解决方案1】:

    解决了问题!

    func toggleButton() {
            guard
                let textField = numberTextField.text, !textField.isEmpty,
                let label = dateLabel.text, !label.isEmpty
                else {
                    signUpButton.isEnabled = false
                    return
            }
            signUpButton.isEnabled = true
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多