JTAppleCalendar программно, ячейки не отображаются - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь реализовать JTAppleCalendar программно без раскадровок, используя файл xib для ячейки.Я установил делегат и источник данных и реализовал необходимые функции, но ячейки не отображаются.Я вижу, что представление коллекции настроено и отображается в Viewcontroller (синий квадрат на изображении в ссылке 2), и вызываются configureCalendar () и cellForItemAt (), но данные по-прежнему не отображаются.

Чего мне не хватает?

    var calendarView: JTAppleCalendarView!

  override func viewDidLoad() {
    super.viewDidLoad()

    calendarView = JTAppleCalendarView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
    calendarView.register(CalendarCellView.self, forCellWithReuseIdentifier: "cell")
    calendarView.ibCalendarDelegate = self
    calendarView.ibCalendarDataSource = self
    self.view.addSubview(calendarView)
    self.view.bringSubview(toFront: calendarView)
    self.calendarView.backgroundColor = UIColor.blue
}

extension TestViewController: JTAppleCalendarViewDataSource {
   func configureCalendar(_ calendar: JTAppleCalendarView) -> ConfigurationParameters {
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy MM dd"

    let startDate = formatter.date(from: "2016 02 01")! // You can use date generated from a formatter
    let endDate = Date()                                // You can also use dates created from this function
    let parameters = ConfigurationParameters(startDate: startDate,
                                             endDate: endDate,
                                             numberOfRows: 6, // Only 1, 2, 3, & 6 are allowed
        calendar: Calendar.current,
        generateInDates: .forAllMonths,
        generateOutDates: .tillEndOfGrid,
        firstDayOfWeek: .sunday)
    return parameters
}

func calendar(_ calendar: JTAppleCalendarView, willDisplay cell: JTAppleCell, forItemAt date: Date, cellState: CellState, indexPath: IndexPath) {

    }
}

extension TestViewController: JTAppleCalendarViewDelegate {
  func calendar(_ calendar: JTAppleCalendarView, cellForItemAt date: Date, cellState: CellState, indexPath: IndexPath) -> JTAppleCell {

    let cell = calendar.dequeueReusableJTAppleCell(withReuseIdentifier: "cell", for: indexPath) as! CalendarCellView
    cell.dayLabel?.text = cellState.text
    print(cellState.text)

    return cell
  }  
}



class CalendarCellView: JTAppleCell {

@IBOutlet var dayLabel: UILabel!
@IBOutlet var taskImage: UIImageView!

override func awakeFromNib() {
    dayLabel.textColor = UIColor.red
    self.backgroundColor = UIColor.blue
  }   
}

снимок экрана ячейки xib

снимок экрана того, как в настоящее время выглядит представление коллекции

1 Ответ

0 голосов
/ 27 августа 2018

Макет

* Суперкласс 1003 * равен UICollectionView, и для размещения элементов используется UICollectionViewFlowLayout. JTAppleCalendarView предоставляет CellSize для настройки размера элемента, а также вы можете использовать UICollectionViewFlowLayout для настройки Min Spacing.

Использование настраиваемой ячейки

Я полагаю, вы использовали xib для настраиваемой ячейки, поэтому вам необходимо использовать register(_ nib: UINib?, forCellWithReuseIdentifier identifier: String) для регистрации ячейки. Наконец, не надоне забудьте добавить ограничения для dayLabel.

Пример

Размер ячейки calendarView - 40, ширина - 280 (7 столбцов), высота - 240 (шесть строк), минимальный интервал для ячеек и линий0. enter image description here

...