表格单元格中的自动行高

时间:2017-03-05 07:28:19

标签: ios swift uitableview

我正在尝试扩展我的单元格,当有额外的文本输入时。我不希望“...”最后我希望单元格自动扩展。我已经采取了以下两个步骤,但它无法正常工作。

enter image description here

第1步

        self.tableView.dataSource = self
        self.tableView.delegate = self

        tableView.estimatedRowHeight = 44
        tableView.rowHeight = UITableViewAutomaticDimension  

第2步

        messageLabel.numberOfLines = 0

由于某种原因,我的细胞没有扩大我做错了什么?

import UIKit
import Foundation


struct postStruct {
    let username : String!
    let message : String!
    let photoURL : String!
}



class GeneralChatroom: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {

    @IBOutlet weak var messageTextField: UITextField!
    @IBOutlet weak var tableView: UITableView!
    var generalRoomDataArr = [postStruct]()

    override func viewDidLoad() {
        super.viewDidLoad()


        self.tableView.dataSource = self
        self.tableView.delegate = self

        tableView.estimatedRowHeight = 44
        tableView.rowHeight = UITableViewAutomaticDimension





    }


    @IBAction func backButtonPressed(_ sender: UIButton) {
        self.performSegue(withIdentifier: "BackToRoom", sender: nil)
    }


    //Message Send button is pressed data uploaded to firebase
    @IBAction func sendButtonPressed(_ sender: UIButton) {

        let message : String = self.messageTextField.text!



    }



    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }


    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return generalRoomDataArr.count // your number of cell here
    }


    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {




        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")



        //Set message label to display message
        let messageLabel = cell?.viewWithTag(2) as! UILabel
        messageLabel.text = generalRoomDataArr[indexPath.row].message
        messageLabel.numberOfLines = 0


        // your cell coding
        return cell!
    }





}//END CLASS

更新     我有当前的限制,但我的动态细胞增长不起作用。我的细胞还在显示“......”任何人都能帮我理解为什么吗?我尝试重置为建议的约束,但它不起作用。

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

确保自定义UITableViewCell的自动布局。更改 estimatedRowHeight ,试试这个:

    tableView.estimatedRowHeight = 200

答案 1 :(得分:0)

您可以使用UITableView的委托方法:

func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat
{
       return .AutomaticDimension
}
func tableView(_ tableView: UITableView,estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
{
       return 60
}

但首先必须将标签w.r.t的autolayout约束设置为TableViewCell的内容视图。

答案 2 :(得分:0)

Swift 2.3

// MARK: - TableViewDelegate Setup

extension NotificationVC : UITableViewDelegate,UITableViewDataSource {
    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return UITableViewAutomaticDimension

    }

    func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return UITableViewAutomaticDimension

    }

   }