close

[Swift5]FSCalendar設定方法[カレンダー]

公開日:

Calendarがアプリに手軽に実装できるFSCalendarの設定方法などを、
初のオリジナルアプリを作成中につき備忘録がてら記事にしています。

製作者様のページ:https://github.com/WenchaoD/FSCalendar
こちらを確認すると英語で実装方法は書いてあります!
詳しくはリンク先をご覧ください。

1,UIViewを画面に配置→ClassをFSCalendarに変更

2,ViewControllerにDelegateを読み込ませる

class ViewController: UIViewController,FSCalendarDataSource, FSCalendarDelegate,FSCalendarDelegateAppearance {

3,ViewControllerに変数を定義する

例、

@IBOutlet weak var calendar: FSCalendar!
fileprivate lazy var dateFormatter: DateFormatter = {
         let formatter = DateFormatter()
         formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "ydMMM", options: 0, locale: Locale(identifier: "ja_JP"))
         return formatter
     }()

4,重要:画像のようにView自体にCalendarからControl+ドラッグで二度繋げる(「Delegate」「DataSourse」を選択)

この繋げ方ですが、ViwDidLoadまたはViewWillAppear内で

@IBOutlet weak var calendar: FSCalendar!
~~~~~~
override func viewDidLoad() {
    super.viewDidLoad() 

    tableView.delegate = self     
    tableView.dataSource = self

と表記するのと同義です。どちらかでOKです。

予定がある日にドットを付ける

画像のように日付のしたにドットを付ける関数が用意されています

下は当ライブラリ作者のExampleファイル引用

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
    if self.datesWithEvent.contains(date) {
         return 1     
}
    //return 3 で3つドット付与
    return 0
}

解説

date: Date

・・・現在表示されている月の日付(Date型)がループで投げられます。自動的にFor in構文のように dateの数だけこの関数が読まれます。

dateSWithEvent

・・・にDate型配列でEventがある日付を格納している場合は上のようにcontainsで比較できます。

Comment

メールアドレスが公開されることはありません。