Я создал собственное представление, которое содержит указатель даты и кнопку отправки.когда я создаю и вызываю это представление в контроллере представления, кнопка не работает немедленно, мне нужно поиграть с набором датчиков, прежде чем он заработает.Я чувствую, что я как-то испортил свои ограничения, так как я довольно новичок в этом.Любая помощь приветствуется.
Это мой пользовательский код просмотра
func setupDatePicker() {
datepicker = UIDatePicker()
datepicker.minimumDate = Date()
datepicker.addTarget(self, action: #selector(datePicker(sender:)), for: .valueChanged)
datepicker.setValue(Colors.starYellow, forKey: "textColor")
}
func setupButton(){
submitButton = CustomButton()
submitButton.setTitle("Submit", for: .normal)
submitButton.addTarget(self, action: #selector(dateSubmission(sender:)), for: .touchUpInside)
}
func addingSubviews() {
setupButton()
addSubview(submitButton)
bringSubviewToFront(submitButton)
setupDatePicker()
addSubview(datepicker)
}
func setupConstraints(){
addingSubviews()
//Custom View Constraints
translatesAutoresizingMaskIntoConstraints = false
leadingAnchor.constraint(equalTo: superview!.leadingAnchor, constant: 20).isActive = true
trailingAnchor.constraint(equalTo: superview!.trailingAnchor, constant: -20).isActive = true
heightAnchor.constraint(equalToConstant: 80).isActive = true
centerYAnchor.constraint(equalTo: superview!.centerYAnchor).isActive = true
backgroundColor = Colors.darkBackground
layer.cornerRadius = 15
//DatePicker Constraints
datepicker.translatesAutoresizingMaskIntoConstraints = false
datepicker.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 10).isActive = true
datepicker.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -10).isActive = true
datepicker.heightAnchor.constraint(equalToConstant: 50).isActive = true
datepicker.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
// Button Constraints
submitButton.translatesAutoresizingMaskIntoConstraints = false
submitButton.leadingAnchor.constraint(equalTo: datepicker.leadingAnchor, constant: 100).isActive = true
submitButton.trailingAnchor.constraint(equalTo: datepicker.trailingAnchor, constant: -100).isActive = true
submitButton.heightAnchor.constraint(equalToConstant: 30).isActive = true
submitButton.bottomAnchor.constraint(equalTo: datepicker.bottomAnchor, constant: 35).isActive = true
}
override func didMoveToSuperview() {
setupConstraints()
}
@objc func datePicker(sender: UIDatePicker){
self.datepicked = sender.date
print("Date selected: \(datepicked)")
}
Эта функция не вызывается
@objc func dateSubmission(sender: CustomButton){
sender.shake()
let currentDate = Date()
let interval = datepicked?.timeIntervalSince(currentDate)
print(interval)
let notifcation = UNMutableNotificationContent()
notifcation.title = notificationTitle ?? "title empty"
notifcation.subtitle = "test"
notifcation.body = "test2"
notifcation.badge = 1
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: interval!, repeats: false)
let request = UNNotificationRequest(identifier: "taskReminder", content: notifcation, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
}
и вот как я создал свой собственный вид в своем контроллере вида, в котором я хочу отобразить вид.
var customView: CustomView!
func createReminderView(indexPath: IndexPath){
let task = tasks[indexPath.row]
customView = CustomView()
customView.notificationTitle = task.task
view.addSubview(customView)
view.bringSubviewToFront(customView)
}
Спасибо за ваше время.
Просмотр отладчика: