- 首先,导入FSCalendar库并创建一个FSCalendar实例,其中我们将使用它来显示可用的预约日期和时间。
代码示例:
import FSCalendar
class ViewController: UIViewController, FSCalendarDataSource, FSCalendarDelegate {
@IBOutlet weak var calendar: FSCalendar!
override func viewDidLoad() {
super.viewDidLoad()
calendar.dataSource = self
calendar.delegate = self
}
}
- 然后,我们需要为每个可用的日期和时间创建一个“时间段”,以便用户可以在预约时间内选择他们的时间。
代码示例:
struct AppointmentSlot {
var startDate: Date
var endDate: Date
}
let slots = [
AppointmentSlot(startDate: Date(timeIntervalSinceNow: 3600), endDate: Date(timeIntervalSinceNow: 7200)),
AppointmentSlot(startDate: Date(timeIntervalSinceNow: 7200), endDate: Date(timeIntervalSinceNow: 10800)),
AppointmentSlot(startDate: Date(timeIntervalSinceNow: 10800), endDate: Date(timeIntervalSinceNow: 14400))
]
- 接下来,我们将为FSCalendar添加一个定制的单元格,以便可以将其用作显示可用预约时间段的方式。我们也将在这里添加代码以便用户可以选择所需的时间段,然后将其预约。
代码示例:
func calendar(_ calendar: FSCalendar, cellFor date: Date, at monthPosition: FSCalendarMonthPosition) -> FSCalendarCell {
let cell = calendar.dequeueReusableCell(withIdentifier: "cell", for: date, at: monthPosition) as! CustomCell
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm"
let dateString = dateFormatter.string(from: date)
cell.dateLabel.text = dateString
for slot in slots {
if slot.startDate <= date && slot.endDate >= date {
cell.isSelectable = true
cell.slot = slot
cell.backgroundColor = UIColor.green
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1.0
break
}
}