An availability calendar implementation for iOS
Switch branches/tags
Nothing to show
Clone or download
Latest commit aae59b1 Aug 3, 2016


NWCalendar View is an iOS control that displays a calendar. It is perfect for appointment or availibilty selection. It allows for selection of a single date or a range. It also allows to disable dates that are unavailable.

Sample Usage

@IBOutlet weak var calendarView: NWCalendarView!

override func viewDidLoad() {

  calendarView.layer.borderWidth = 1
  calendarView.layer.borderColor = UIColor.lightGrayColor().CGColor
  calendarView.backgroundColor = UIColor.whiteColor()

  var date = NSDate()
  let newDate = date.dateByAddingTimeInterval(60*60*24*8)
  let newDate2 = date.dateByAddingTimeInterval(60*60*24*9)
  let newDate3 = date.dateByAddingTimeInterval(60*60*24*30)
  calendarView.disabledDates = [newDate, newDate2, newDate3]
  calendarView.selectionRangeLength = 7
  calendarView.maxMonths = 4
  calendarView.delegate = self


Make sure to call createCalendar() setting your custom options

disable dates

// Takes an array of NSDates
calendarView.disabledDates = [newDate, newDate2, newDate3]

Set Max Months

You may only want to allow going 4 months into the future

calendarView.maxMonths = 4

Set selection Range (defaults to 0)

selectionRangeLength = 7


didChangeFromMonthToMonth(fromMonth: NSDateComponents, toMonth: NSDateComponents)

func didChangeFromMonthToMonth(fromMonth: NSDateComponents, toMonth: NSDateComponents) {
  println("Change From month \(fromMonth) to month \(toMonth)")

didSelectDate(fromDate: NSDateComponents, toDate: NSDateComponents)

func didSelectDate(fromDate: NSDateComponents, toDate: NSDateComponents) {
  println("Selected date \(!) to date \(!)")


  1. Enable going into the past
  2. Dynamic adding of months when scrolling in to past
  3. Make all aspects customizable (font, colors, etc..)
  4. Turn into cocoapod