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

Posted

技术标签:

【中文标题】swift中tableView的单元格高度扩展时更改标签文本【英文标题】:Change label text when height expand of cell of tableView in swift 【发布时间】:2018-01-24 06:08:21 【问题描述】:

我是ios新手,我正在使用swift。我想在单元格高度扩展时更改标签文本。请告诉我如何在swift中单元格高度扩展时更改文本。

导入 UIKit 类 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
        
    

【问题讨论】:

只需更改您调用代码的文本字段中的文本即可更改单元格高度 yourTextField.text = "required content" 请帮我编辑我的代码 我无法理解我在哪里更改文本 总结一下您的问题,您是否希望更改特定索引的文本? 是的,我想更改tableview扩展单元格的标签文本 【参考方案1】:

在您的代码中,您尝试在 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)

【讨论】:

以上是关于swift中tableView的单元格高度扩展时更改标签文本的主要内容,如果未能解决你的问题,请参考以下文章

Swift tableview 单元格比例高度

tableview不同的单元格在swift中有不同的高度

TableView 控制器中无法扩展 TableView 单元格的高度

UITableView 单元格的动态高度问题(Swift)

根据内容动态调整tableview单元格的高度 - iOS Swift

Swift TableView 单元[关闭]