に基づいてテーブルビューのセルの高さを調整する方法のUITableViewCell内部UICollectionView私は、次のレイアウト画面サイズ
- を持っているのUITableView
- のUITableViewCell(クラス:CategoryCell)
- ラベル
- ボタン
- UICollectionView
- UICollectionViewCell(クラス:ItemCell)
- UIImageView
- UILabel
- UICollectionViewCell(クラス:ItemCell)
- のUITableViewCell(クラス:CategoryCell)
私はいつも3つの項目を表示するようになしUICollectionViewを作るしようとしています画面のサイズに関係します。画面の幅に基づいてアイテムを表示することができ、高さを設定することができました。ただし、CategoryCellの内部からテーブルビューの高さは変わりません。コードは次のとおりです。
// CategoryCell.swift
func awakeFromNib() {
super.awakeFromNib()
// Calculate width and height based on screen width
let screenWidth = UIScreen.main.bounds.width
let itemWidth = screenWidth/3.0
let itemHeight = itemWidth/0.75 // 3:4 aspect ratio
// Change height of table view cell
self.bounds.size.height = self.bounds.size.height - collectionView.bounds.size.height + itemHeight
// This is the line does nothing
// It should remove collectionView height from tableView (height of collectionView is set through autolayout) then add he new height to it.
// Set collection view height to equal to item height
collectionView.bounds.size.height = itemHeight
// set item height
let layout = collectionViewProducts.collectionViewLayout as! UICollectionViewFlowLayout
layout.itemSize = CGSize(width: itemWidth, height: itemHeight - 1.0)
// -1.0 because item/cell height needs to be SMALLER than collection view height
}
セルクラス内部からテーブルビューセルの高さを変更するにはどうすればよいですか?私の唯一の推測は、私はawakeFromNib内でこれらの操作を行うべきではないが、これらを呼び出す別の関数を見つけることができないということです。
編集:私はRxSwiftを使用していますので、私のデータのソースコードは以下の通りです:
let observable = Observable.just(data)
observable.bindTo(tableView.rx.items(cellIdentifier: "CategoryCell", cellType: CategoryCell.self)) { (row, element, cell) in
cell.setCategory(category: element)
}.disposed(by: disposeBag)
tableView.rx.setDelegate(self).disposed(by: disposeBag)
動的な高さが私にとって問題ありません。固定高さには、割り当てた高さのセルが表示されます。ただし、tableViewCellはtableView自体を更新しません。 – Gasim
あなたはあなたのtableviewのデータソースを投稿し、ここにコードを委譲してください。 – Pankaj
データソースコードを追加しました。私の代理人コードは上記で提供したものだけを持っています。 – Gasim