Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.

An event recurrence rule picker similar to iOS system calendar.

License

Notifications You must be signed in to change notification settings

alibaba-archive/RecurrencePicker

Repository files navigation

RecurrencePicker

An event recurrence rule picker similar to iOS system calendar.

Example

How To Get Started

Carthage

Specify "RecurrencePicker" in your Cartfile:

github "teambition/RecurrencePicker"

Usage

Import necessary frameworks

import RRuleSwift
import EventKit
import RecurrencePicker

Initialization and Configuration

// 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)

Implement the delegate

func recurrencePicker(_ picker: RecurrencePicker, didPickRecurrence recurrenceRule: RecurrenceRule?) {
    // do something, if recurrenceRule is nil, that means "never repeat".
}

Minimum Requirement

iOS 8.0

Dependency

RecurrencePicker's running requires RRuleSwift.

Localization

RecurrencePicker supports 5 languages: English, 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;DTSTART=20160413T133011Z;BYDAY=TU,WE,FR"
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週間ごとに、火曜日、水曜日と金曜日にあるイベントです。

Release Notes

License

RecurrencePicker is released under the MIT license. See LICENSE for details.

More Info

Have a question? Please open an issue!