2016-06-02 3 views
0

мой текущий вопрос выглядит так:Пользовательские UITableViewCell элементы не отображаются должным образом

Я с целью создать «домашний» вид для моего iPhone приложения. Она должна состоять из «признаков» вид (верхняя части представления на прилагаемой картинке) и вид таблицы подачи стиля под ним:

enter image description here

Путем я проектировал это до сих пор является используйте один вид таблицы с двумя разными прототипами ячеек: один для «признанного» вида (большая темно-синяя ячейка со списком прокрутки и управление страницей внутри) и один для представления «элемент подачи» (в настоящее время пустая ячейка ниже) , Оба имеют отдельные файлы классов, прикрепленные к ним. Я хочу, чтобы «признанная» ячейка отображалась только один раз поверх представления, а затем ячейки «фида», все из которых были загружены с внешнего бэкэнда.

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

    switch indexPath.row { 
    case 0: 
     let cell: FeaturedItemCell = FeaturedStockCell(style: .Default, reuseIdentifier: "featuredItem") 
     return cell 
    default: 
     let cell: HomeItemCell = HomeItemCell(style: .Default, reuseIdentifier: "homeItem") 
     return cell 
    } 
} 

Однако, используя приведенный выше код, все, что я получаю взамен, представляет собой пустую пустую белую строку внутри таблицы.

Таким образом, вопросы заключаются в следующем:

  1. Что я должен сделать, чтобы генерировать клетки, как я проектировал их? и
  2. Является ли этот подход правильным, или есть ли лучшие способы для справиться с этой проблемой?
+1

Вы установили методы делегата таблицы и источника данных? –

ответ

0

Поскольку вы уже создали прототипы в UITableView, метод создания экземпляров ячеек становится немного другим.

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

    var identifier: String 
    switch indexPath.row { 
    case 0: 
     identifier = "featuredItem" 
    default: 
     identifier = "homeItem" 

    } 
    let cell: FeaturedItemCell = tableView.dequeueReusableCellWithIdentifier("featuredItem", forIndexPath: indexPath) 
    return cell 
} 
+0

Если вы используете dequeueReusableCellWithIdentifier, не забудьте реализовать 'registerClass:' или 'registerNib' метод для tableView в методе viewDidLoad – iSashok

+0

@iSashok Я не думаю, что это необходимо при использовании раскадровки, причем оба прототипа со списком назначаются классом. Или это? – michalronin

+0

, если вы создаете пользовательскую ячейку в отдельном файле .xib, вам нужен регистрNib – iSashok

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