Skip to content

selectedDate for .countDownTimer not working as expected #560

@Lucalaure

Description

@Lucalaure

I have set my ActionSheetDatePicker as the following, however, I can't seem to be able to set the selectedDate using the function initialCountdownDurationInSeconds()... Am I implementing this correctly or is this a bug?

@IBAction func durationAction(_ sender: UIButton) {
        let countdownDuration = initialCountdownDurationInSeconds()
        // Create the selectedDate by adding the countdown duration to the current date
        let selectedDate = Date().addingTimeInterval(countdownDuration)

        ActionSheetDatePicker.show(withTitle: "Select Time", datePickerMode: .countDownTimer, selectedDate: selectedDate, doneBlock: {
            picker, value, index in
            if let duration = value as? TimeInterval {
                self.handleDatePickerSelection(with: duration)
            }
            return
        }, cancel: { ActionMultipleStringCancelBlock in return }, origin: sender)
    }

    func initialCountdownDurationInSeconds() -> TimeInterval {
        var totalSeconds = 0

        // If there's existing duration text, use it to calculate the initial countdown duration.
        // Otherwise, default to 1 minute.
        guard let text = self.textInstantDuration.text, !text.isEmpty else {
            return TimeInterval(60)
        }

        // Assume the following formats: "Xh Ym" or "Xh" or "Ym"
        if let hourRange = text.range(of: "\\d+h", options: .regularExpression) {
            let hourString = text[hourRange].dropLast() // Remove 'h'
            if let hours = Int(hourString) {
                totalSeconds += hours * 3600 // Convert hours to seconds
            }
        }

        if let minuteRange = text.range(of: "\\d+m", options: .regularExpression) {
            let minuteString = text[minuteRange].dropLast() // Remove 'm'
            if let minutes = Int(minuteString) {
                totalSeconds += minutes * 60 // Convert minutes to seconds
            }
        }

        return TimeInterval(totalSeconds)
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions