An event recurrence rule picker similar to iOS system calendar.
RecurrencePicker is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'RecurrencePicker'
import RecurrencePicker
// prepare a recurrence rule and an occurrence date
// occurrence date is the date which the repeat event occurs this time
let recurrenceRule = ...
let occurrenceDate = ...
// initialization and configuration
// RecurrencePicker can be initialized with a recurrence rule or nil, nil means "never repeat"
let recurrencePicker = RecurrencePicker(recurrenceRule: recurrenceRule)
recurrencePicker.language = .english
recurrencePicker.calendar = Calendar.current
recurrencePicker.tintColor = UIColor.blue
recurrencePicker.occurrenceDate = occurrenceDate
// assign delegate
recurrencePicker.delegate = self
// push to the picker scene
navigationController?.pushViewController(recurrencePicker, animated: true)
func recurrencePicker(_ picker: RecurrencePicker, didPickRecurrence recurrenceRule: RecurrenceRule?) {
// do something, if recurrenceRule is nil, that means "never repeat".
}
Original RRule library is here https://github.com/teambition/RRuleSwift
In this Pod it was adopted to use it with https://github.com/seejohnrun/ice_cube on the server side.
Instead of
let ruleString = "RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=MO;DTSTART=20160413T133011Z;BYDAY=TU,WE,FR"
Now rrule string looks like this (DTSTART is on the new line and date value is separated by semicolon)
let ruleString = "RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=MO;BYDAY=TU,WE,FR\nDTSTART:20160413T133011Z"
Also Russian language and formatting a rule to text form was changed.
iOS 10.0
RecurrencePicker supports 6 languages: English, Russian, Simplified Chinese, Traditional Chinese, Korean, Japanese. You can set the language when initialization.
You can also get a localized rule text string like this:
let ruleString = "RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=MO;BYDAY=TU,WE,FR\nDTSTART:20160413T133011Z"
let recurrenceRule = RecurrenceRule(rruleString: ruleString)
let language: RecurrencePickerLanguage = ...
let recurrenceRuleText = recurrenceRule?.toText(of: language, occurrenceDate: Date())
print(recurrenceRuleText)
// Event will occur every 2 weeks on Tuesday, Wednesday and Friday.
// Каждые 2 недели - вторник, среда и пятница
// 事件将每2周于星期二、星期三和星期五重复一次。
// 行程每2週的星期二、星期三和星期五重複一次。
// 2주마다 화요일, 수요일 및 금요일에 이벤트 반복
// 2週間ごとに、火曜日、水曜日と金曜日にあるイベントです。
Original version https://github.com/teambition/RecurrencePicker
RecurrencePicker is available under the MIT license. See the LICENSE file for more info.