web-dev-qa-db-ja.com

スクロールビューでの動的な高さのTableView

私はスクロールビューとその上にテーブルビュー(スクロール無効)があるページをデザインしています。これを行うために、この質問の回答を参照しました- ITableViewをスクロールできないようにして、すべてのセルに対応するように高さを調整します 、しかし成功しませんでした。

ビューの階層と提供された制約-

-メインビュー

-スクロールビュー
メインビュー(0,0,0,0)のすべての側面に固定、マージンへの制約

-コンテンツビュー

スクロールビューに固定(0,0,0,0)、メインビューと同じ幅、メインビューと同じ高さ(優先度-250)

-コンテンツビュー内のテーブルビュー

スクロールが無効になっている、すべての側面から50ポイントのスペースがある、高さ(> =)、下の間隔50(関係> =)。高さを動的に上げるために、等しいよりも大きい値を設定しました。

テーブルビューにデータを入力するときは、次のようにコードを使用します。

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableview.dequeueReusableCellWithIdentifier("cellreuse", forIndexPath: indexPath) 
        cell.textLabel?.text = name[indexPath.row]

        tableview.frame.size = tableview.contentSize

        return cell
    }

そのため、コードを実行すると、テーブルビューフレームが増加しますが、コンテンツサイズは拡大されず、スクロールビューがテーブルビューの最後までスクロールしないため、テーブルビューが自動レイアウトの制約に従っていないため、奇妙になります。

16
user5479794

これを行う必要があっただけです-

  • 行を削除-tableView.frame.size = tableView.contentSize

  • テーブルビューの高さの制約を追加します。

  • 優先度を高に設定

  • 高さ制約の出口を作成します(Ctrl +ドラッグ)。

  • テーブルのデータを再読み込みする必要がある場合は常に、高さの制約をテーブルビューのコンテンツの高さに設定します。

tableHeightConstraint.constant = tableview.contentSize.height
43
user5479794