問題

私は次の問題に直面しています:

  • 私はtableViewを持つコンテナビューを持って、tableViewにはセルとフッターが含まれています
  • フッターには、セルを持つ別のtableViewを含むUIViewがあります(これはtableViewコンテンツの日付のためにタブを変更する必要があるため、小姓にopaquedされています)

私は何を達成したいのですか?

tableViewの内容に合わせてtableViewフッターのサイズを変更したい

私はこれを達成するために何をしていますか?

私はいくつかの研究を準備しました。私はResizableTableViewを開発しました。このコードは次のとおりです。

 class ResizableTableView: UITableView {
    override var intrinsicContentSize: CGSize {
        layoutIfNeeded()
        return contentSize
    }
    func reloadData(with completion: @escaping () -> ()) {
        animator.animate(withDuration: 0, options: [], animations:  {
            self.reloadData()
            self.invalidateIntrinsicContentSize()
        }, completion: { _ in
            completion()
        })
    }
}
 

問題は、最初のロードビューではサイズが正しく変更されていないことです。tableView contentSizeは私に完全な高さを与えていない、コンテンツはカットされます。

たぶん、誰もがその内容にtableViewの高さを一致させる同様の問題を抱えています。私は似たような質問をたくさん読んだことがありますが、それらのどれも私の問題に一致していませんでした。

私はtableViewデータをリロードしようとしていましたが、デリゲートによってviewControllerにtableViewフッターのサイズを変更するように指示しましたが、これも最初の負荷で失敗しました。セルは自動レイアウトによってサイズ変更されています - これはおそらくこの実装で重要な問題

  ベストアンサー

tableViewのフッターに新しいTableViewを含めるのは良くありません。 フッタービューを追加する代わりに、新しいセクションを追加してカスタマイズされたセルを使用する方が良いでしょう。

このようにして、テーブルビューのフッターである2番目のセクションの動的な高さでセルを処理する必要はありません。

  同じタグがついた質問を見る

swiftautolayouttableview