1

Hi I'm trying to use ActionSheetPicker to let the user select a time for a reminder but I get the error described in the title. Here is my Code:

SelectTime(sender: validCell) // called when tapping a date

// Time Picker
func SelectTime(sender: UIView){
    //let timePicker = ActionSheetDatePicker.show(withTitle: "Enter time for reminder", datePickerMode: .time, selectedDate: userDate, target: self, action: , origin: sender.superview!.superview)
    let timePicker = ActionSheetDatePicker.show(withTitle: "Enter time for reminder", datePickerMode: .time, selectedDate: userDate, target: self, action: Selector(("timePicked")), origin: sender.superview!.superview, cancelAction: Selector(("timeCanceled")))

    timePicker?.minuteInterval = 5

    timePicker?.locale = Calendar.current.locale
    timePicker?.show()

}
func timePicked(time: Date){
    dateSelected.text = formatter.string(for: time)
}
func timeCanceled(){
    print("Canceled")
    dismiss(animated: true, completion: nil)
}

The cancel code is never called and when I press cancel on the timePicker it shows another time picker underneath it without any buttons. Gif when canceling http://www.giphy.com/gifs/l1J3zMQWJ23GpHEaY

The dateSelected is also never called. I'm I doing the selectors wrong?

CFRJ
  • 157
  • 1
  • 12

1 Answers1

1

Change this code

func SelectTime(sender: UIView){
    let timePicker = ActionSheetDatePicker.show(withTitle: "Enter time for reminder", datePickerMode: .time, selectedDate: userDate, target: self, action: , origin: sender.superview!.superview)
    let timePicker = ActionSheetDatePicker.show(withTitle: "Enter time for reminder", datePickerMode: .time, selectedDate: userDate, target: self, action: Selector(("timePicked")), origin: sender.superview!.superview, cancelAction: Selector(("timeCanceled")))

     timePicker?.minuteInterval = 5

     timePicker?.locale = Calendar.current.locale
timePicker?.show()

}
 func timePicked(time: Date){
dateSelected.text = formatter.string(for: time)
}
func timeCanceled(){
print("Canceled")
dismiss(animated: true, completion: nil)
}

in this code....

 let timePicker = ActionSheetDatePicker(title: "Date:", datePickerMode: UIDatePickerMode.date, selectedDate: Date(), doneBlock: {
        picker, value, index in
 dateSelected.text = formatter.string(for: time)
        print("value = \(value)")
        print("index = \(index)")
        print("picker = \(picker)")
        return
    }, cancel: { ActionStringCancelBlock in
        print("cancel")
        return }, origin: sender.superview!.superview)
     timePicker?.minuteInterval = 5
     timePicker?.locale = Calendar.current.locale
Raksha Saini
  • 604
  • 12
  • 28
  • you can declare timepicker out of function and add timepicker.ishidden = true and add in timecancel method. – Raksha Saini Jul 29 '17 at 09:08
  • But when I try to declare the timePicker outside the function I get an error with origin: sender.superview!.superview – CFRJ Jul 29 '17 at 09:10
  • some minute wait i am trying – Raksha Saini Jul 29 '17 at 09:13
  • @J-Doe hey Remove Two function timepicked and timecanecl – Raksha Saini Jul 29 '17 at 09:35
  • I removed them and put back the let timePicker = ActionSheetDatePicker.show(withTitle: "Enter time for reminder", datePickerMode: .time, selectedDate: userDate, target: self, action: Selector(("timePicked")), origin: sender.superview!.superview, cancelAction:Selector("timeCanceled")) back inside the SelectedTime Function and still have the same error – CFRJ Jul 29 '17 at 09:38
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/150458/discussion-between-j-doe-and-raksha). – CFRJ Jul 29 '17 at 09:40