this tutorialの後にユーザーがスクロールすると、ヘッダービューの高さを変更しようとしています。しかし、self.songsTable.headerView(forSection: 0)?.frame.size.height
にアクセスしようとすると(ヘッダービューの高さを更新することができます)、値はゼロになり、デバッガから「ヘッダービューには高さがありません」と表示されます。 heightForHeaderInSection
とviewForHeaderInSection
を使用してプログラムでヘッダービューを作成しました。tableView.headerView(forSection:0)の高さはゼロです
コード
class SongsViewController {
var currentHeaderHeight: CGFloat = 136
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//Throws error
guard let currentHeaderHeight = self.songsTable.headerView(forSection: 0)?.frame.size.height else {
print("header view has no height")
return
}
}
public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return currentHeaderHeight
}
public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView()
headerView.frame = CGRect(x: 0, y: 0, width: Screen.width, height: maxHeaderHeight)
return headerView
}
}
これは完全なコードを表示せずにデバッグするのは少し難しいです。心に浮かぶもの - 現在のHeadHeightは何ですか? 0にすることができますか?セクション(numberOfSections)はありますか?あなたのデバッガは、SongTable.headerView(forSection:0)がnilなので印刷していますか? – cloudcal
@cloudcal私のコードを更新しました。 currentHeaderHeightは136に初期設定されています。 'numberOfSections'は1です。なぜ' songsTable.headerView(forSection:0) 'がnillであるのか分かりません。 – Alex
@Alex、こんにちは、見つけましたか?この無限の問題の理由をアウト? – 0xa6a