在swift的tableView单元格的高度扩展时更改标签文本

时间:2018-01-24 06:08:21

标签: swift uitableview uilabel heightforrowatindexpath

我是IOS的新手,我正在使用swift。我希望在单元格的高度扩大时更改标签的文本。请告诉我如何在swift的单元格高度扩展时更改文本。

导入UIKit class ViewController:UIViewController,UITableViewDelegate,UITableViewDataSource     {

    var selectedIndex = -1
    var height = 54
    // Data model: These strings will be the data for the table view cells
    let animals: [String] = ["Horse", "Cow", "Camel", "Sheep", "Goat"]
    // cell reuse id (cells that scroll out of view can be reused)
    let cellReuseIdentifier = "cell"

    // don't forget to hook this up from the storyboard
    @IBOutlet var tableView: UITableView!
    override func viewDidLoad()
    {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self
    }

    // number of rows in table view
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return 2
    }

    // create a cell for each table view row
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        // create a new cell if needed or reuse an old one
        let cell:Cell1 = self.tableView.dequeueReusableCell(withIdentifier: "cell") as! Cell1!
        cell.textLabel?.text = "-"
        return cell
    }

    // method to run when table view cell is tapped

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
         let cell:Cell1 = self.tableView.dequeueReusableCell(withIdentifier: "cell") as! Cell1!
        if(selectedIndex == indexPath.row)
        {
            height = 216

            cell.textLabel?.text = "+"
        }else{
             height = 54
             cell.textLabel?.text = "/"
        }
        return CGFloat(height)
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
    {
        print("You tapped cell number \(indexPath.row).")

        if(selectedIndex == indexPath.row)
        {
            selectedIndex = -1
        }
        else
        {

            selectedIndex = indexPath.row
        }
    }
}

1 个答案:

答案 0 :(得分:0)

在您的代码中,您试图在heightForRowAt函数中再次将单元格出列,我认为这是您的问题。

因此请尝试使用以下代码替换heightForRowAt函数。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
      let cell = tableView.cellForRow(at: indexPath) 
    if(selectedIndex == indexPath.row)
    {
        height = 216

        cell.textLabel?.text = "+"
    }else{
         height = 54
         cell.textLabel?.text = "/"
    }
    return CGFloat(height)
}