2016-07-06 5 views
0

Я пытаюсь создать демонстрационное приложение, которое очень похоже на приложение календаря iOS по умолчанию. Я почти закончил, но не совсем уверен, что лучше всего использовать пользовательскую ячейку в TableView.Программная реализация XIB TableView Cell

Глядя на скриншот (см. Ниже), приложение по умолчанию имеет TableView всех событий в данный день. Как мне следует применять этот стиль в моей камере?

На данный момент у меня есть это (в основном называется в моем viewDidAppear метод:

  • Месяц название как ярлык, который определен в раскадровке
  • Календарь пакет, который я применяется программно
  • По умолчанию iOS Tableview, который также применяется программно под этим

Поскольку TableView применяется программно, я не совсем уверен, куда идти. B Elow мой код TableView:

let cellReuseIdentifier = "eventCell" 
let offsetY = {% Some fancy calculation here to get offset pos %} 
let height = {% Just as above but to determine remaining height %} 

tableView.frame = CGRectMake(0, offsetY, screenSize.width, height) 
tableView.delegate = self 
tableView.dataSource = self 
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) 

view.addSubview(tableView) 

И конкретные методы Исходные данные:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return selectedEvents.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     // create a new cell if needed or reuse an old one 
     let cell = tableView.dequeueReusableCellWithIdentifier(cellReuseIdentifier)! 
     let event = selectedEvents[indexPath.row] 

     // set the text from the data model 
     cell.textLabel?.text = "\(event.startTime) - \(event.endTime) | \(event.summary)" 

     return cell 
    } 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     print("You tapped cell number \(indexPath.row).") 
    } 

Любое руководство будет оценено :)

iOS Calendar

ответ

0

Это должно выглядеть примерно так это:

tableView.registerClass(CustomCellClass.self, forCellReuseIdentifier: "CustomCellClasId") 

И потом:

internal func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    if let cell = tableView.dequeueReusableCellWithIdentifier("CustomCellClassId", forIndexPath: indexPath) as? CustomCellClass{ 
      // set up cell 
      return cell 
     } 
} 
+0

@sukh этот ответ, как вы используете свой собственный класс клеток - будь то реализуется программно или XIB до вас, но в моем опыте большинство людей xibs легче проектировать. – bradkratky

+0

Спасибо @ andrew-mckinley и @bradkratky. Для того, чтобы это получилось, мне пришлось удалить строку 'registerClass' - это правильно? Я могу добавить дополнительные сведения, если это необходимо ... в основном я создал новый подклассу 'UITableViewCell' с соответствующим XIB-файлом. Изменил идентификатор повторного использования и изменил метод cellForRowAtIndexPath, чтобы проверить, нет ли ячейки. Если он равен нулю, я использую следующую строку: «tableView.registerNib (UINib (имя_бита:« RoomDetailTableViewCell », bundle: nil), forCellReuseIdentifier:« roomDetailCell »)', а затем в основном повторно освободил ячейку – sukh

+1

Хорошо, вы можете игнорировать мои глупость - я нашел еще один дублированный пост StackOverflow здесь http://stackoverflow.com/questions/28999400/swift-uitableview-custom-cell-programatically-documentation - просто последует этому :) – sukh

Смежные вопросы