Swift: как передать мое выделенное текстовое поле в качестве параметра через параметр селектора моего UIBarButtonItem - PullRequest
0 голосов
/ 11 июля 2020

У меня есть два текстовых поля, и оба они вызывают выбор даты, когда на них нажимает пользователь. У меня есть средство выбора даты с кнопкой «Готово», и я хочу показать время, которое я выбираю из средства выбора даты, в выбранном текстовом поле. Итак, как я могу передать выбранное текстовое поле в качестве аргумента в параметре селектора моего UIBarButtonItem. Ниже представлен весь код. Пожалуйста помоги. Спасибо!

@IBOutlet weak var startingTimeTxt: UITextField!

@IBOutlet weak var endingTimeTxt: UITextField!

let datePickerTime = UIDatePicker()

override func viewDidLoad() {
    super.viewDidLoad()

    startingTimeTxt.delegate = self
    endingTimeTxt.delegate = self
    
    datePickerTime.datePickerMode = .time
}

func createDatePicker(textField: UITextField) {
    //toolbar
    let toolbar = UIToolbar()
    toolbar.sizeToFit() //will fit to full screen
    
    //bar done button
    let doneBtn = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(donePressed(textField: )))
    //remember in selector u dont want to call the method , just name it
    toolbar.setItems([doneBtn], animated: true)
    
    //assign toolbar
    textField.inputAccessoryView = toolbar
    
    //assign date picker to textfield
    textField.inputView = datePickerTime
    
    
}

 @objc func donePressed(textField: UITextField) {
    textField.text = "\(datePickerTime)"
    self.view.endEditing(true)
    
  }
}

//MARK: - TextField Delegate
extension NewActivityTableViewController: UITextFieldDelegate {

func textFieldDidBeginEditing(_ textField: UITextField) {
    
    if textField == startingTimeTxt {
        createDatePicker(textField: textField)
    }
    else if textField == endingTimeTxt {
        createDatePicker(textField: textField)
    }
 }

}

1 Ответ

0 голосов
/ 11 июля 2020

Вам нужно сделать это button: UIBarButtonItem, поскольку это то, что вы добавили в селектор, и внутри метода доступ к дате средства выбора и использование средства форматирования даты для извлечения необходимого текста и присвоения его тексту текстового поля

let doneBtn = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(donePressed(_:)))

С

@objc func donePressed(_ button: UIBarButtonItem) { 
  print(datePickerTime.date)
}

Также проверьте Swift: использование UIDatePicker в качестве UITextField inputView не обновляется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...