2016-10-06 33 views
2

Swiftでコーディング3.カスタムセルとヘッダーを持つtableViewを持ってください。heightForHeaderInSectionは一度だけ呼び出されます

私はカスタムのセルとヘッダーを持つtableViewを持っています。ヘッダーには2つのラベルがあり、ラベルが長いため動的なセルの高さがあります。私の問題は、tableViewとセクションが初めて設定されたときに、ラベルが表示されるように表示されます。ただし、スクロールしてからヘッダーのレイアウトをバックアップすると、何らかの理由でブレークします。

When tableView first loads and user scrolls down everything appears fine

私は細胞にまで戻った後、下にスクロールした後に、下記見ることができるように、ラベルは、カットオフを得ています。

After scrolling down and back up label is cut off

メソッドが呼び出されているかを印刷した後、私は、最初の時間は、2つ(2)オーバーライド機能が呼び出される以下のtableViewをスクロールダウンすることを見出しました。

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    print("\(section) heightForHeaderInSection") 
    print("\(section) returning AUTO for header") 
    return UITableViewAutomaticDimension 
} 

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    print("\(section) viewForHeaderInSection") 
    let header = tableView.dequeueReusableCell(withIdentifier: "QuestionHeader") as! QuestionHeader 
    header.delegate = self 
    header.contentView.backgroundColor = UIColor.groupTableViewBackground 
    header.questionTextLabel.text = String(questionStringArray[section]) 
    header.questionNumberLabel.text = (String(section + 1) + ")") 
    return header.contentView 
} 

しかし、私はバックアップにスクロールするときONLY viewForHeader関数が呼び出され、高さはもはやラベルがカットオフを得るUITableViewAutomaticDimensionに設定されているので、私は考えていませんか?

アイデア?

+0

@ozgurは正しいです! –

+0

@ozgur私はupvotingしようとしましたが、間違って '取り消し'してしまいました。私はあなたにアップアップすることができるようにあなたの答えを投稿しますか?再度、感謝します! –

答えて

1

あなたはtableView: viewForHeaderInSection:方法からheader代わりのheader.contentViewを返す必要があります:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    let header = tableView.dequeueReusableCell(... 
    ... 
    return header 
} 
関連する問題