2016-02-09 4 views
0

У меня есть сгруппированный вид таблицы, в котором я хочу иметь настроенные заголовки разделов. Но у меня возникли проблемы с отображением первого заголовка раздела для представления таблицы.Заголовок заголовка первой сгруппированной таблицы, не отображающий

У меня есть две секции и секции заголовка для первой секции не отображается, но второй является:

enter image description here

Я видел подобные проблемы и те проблемы, где решаются путем реализации heightForHeaderInSection но я внедрили это.

Я устанавливаю разделы как это:

let kSectionHeaderContact: String = "CONTACT INFORMATION" 
    let kSectionHeaderFeedback: String = "FEEDBACK" 

    enum Sections: Int { 
     case ContactSection = 0 
     case FeedbackSection = 1 
    } 

    // MARK: - Table view data source 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 2 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     if section == Sections.ContactSection.rawValue { 
      return contactObjectsDictionary.count 
     } else if section == Sections.FeedbackSection.rawValue { 
      return feedbackObjectsDictionary.count 
     } else { 
      return 0 
     } 
    } 

    override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
     if section == Sections.ContactSection.rawValue { 
      sectionHeaderView.sectionHeaderTitle.text = kSectionHeaderContact 
     } else if section == Sections.FeedbackSection.rawValue { 
      sectionHeaderView.sectionHeaderTitle.text = kSectionHeaderFeedback 
     } 

     return sectionHeaderView 
    } 

    override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     return kContactTableViewSectionHeaderViewHeight 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifierContactTableViewCell, forIndexPath: indexPath) as! ContactTableViewCell 

     // Configure the cell... 
     var titleText: String = "" 
     var detailText: String = "" 

     if indexPath.section == Sections.ContactSection.rawValue { 
      let contactObject = contactObjectsDictionary[indexPath.row] 

      titleText = contactObject[kDictionaryTitleKey]! 
      detailText = contactObject[kDictionaryDetailKey]! 

     } else if indexPath.section == Sections.FeedbackSection.rawValue { 
      let feedbackObject = feedbackObjectsDictionary[indexPath.row] 

      titleText = feedbackObject[kDictionaryTitleKey]! 
      detailText = feedbackObject[kDictionaryDetailKey]! 
     } 

     cell.configureCell(titleText, detail: detailText) 

     return cell 
    } 

Я реализует свой собственный заголовок раздела в раскадровке, а затем ссылаться на него по выходу:

enter image description here

Edited : Я хочу иметь возможность создавать свой собственный заголовок раздела в раскадровке, а не программно.

ответ

1

Проблема внутри видForHeaderInSection способ. Вам необходимо создать новый экземпляр UIView & необходимо его вернуть.

ИЛИ

Вы можете создать класс для UITableViewHeaderHeaderView и повторно использовать его.

Не стесняйтесь спрашивать, есть ли у вас какие-либо сомнения относительно этого.

+0

Но почему я не могу использовать свой вид из раскадровки с @IBOutlet var sectionHeaderView: ContactTableViewSectionHeaderView! Справка? Он имеет класс «ContactTableViewSectionHeaderView», который является подклассом UIView – Oskariagon

+0

. Потому что это только один экземпляр UIView & Вы можете использовать его только один раз. Или создайте новый экземпляр. –

+0

Хорошо, так что viewForHeaderInSection работает, как повторное использование ячейки представления таблицы? Но я должен уметь использовать свой собственный подклас UIView из раскадровки? Я хочу создать его в раскадровке, а затем реализовать его как заголовок раздела. – Oskariagon

0

пусть titleFirstLabel: UILabel = {
пусть этикетка = UILabel()
label.text = "Текст"
label.frame = CGRect (х: 15, у: 10, ширина: 100, высота : 20)
возвращение этикетка
}()

и viewDidLoad() добавьте этот код

tableView.addSubview (titleFirstLabel)

Эта работа для меня. Удачи :)

+0

Я не знаком с этой технологией , но я думаю, вы должны сообщить пользователю, где эти изменения должны быть сделаны. – Tipx

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