swift - 快速获取 TableView 单元格内 uiswitch 值更改的标签值

标签 swift uitableview uiswitch swift4.2

我有一个带有标签和开关的 UITableviewcell。

enter image description here

单元格标签根据情况具有动态值。

当我打开/关闭开关时。它只是显示标签显示哪一行开关状态发生了变化。但我想准确了解开关打开/关闭的标签上的内容。

 switchView.tag = indexPath.row // for detect which row switch Changed
 switchView.addTarget(self, action: #selector(self.switchChanged(_:)), for: .valueChanged)

//switch value change function
@objc func switchChanged(_ sender : UISwitch!){

        print("table row switch Changed \(sender.tag)")
       //looking for label text on this tag 
    }

当 tableview 单元格内的开关状态发生变化时,是否有任何方法可以获取单元格标签值。

最佳答案

在 UItableViewCell 中声明以下闭包变量

var returnBlock: ((String?)-> Void)?

在 switch 方法中只需使用 labelObj.text 调用它

    @objc func switchChanged(_ sender : UISwitch!){
             returnBlock?(labelObject.text)
        }

在 TableViewController - CellForRowAtIndexPath 方法中,您在此之前返回单元格,然后编写以下代码。

    cell.returnBlock = { labelText in 
               if let value = labelText {
                print(value)
               }
     }

有很多方法可以做,但我认为这是正确的方法。

对于默认的 UITableViewCell

  @objc func switchChanged(_ sender : UISwitch!){
        if let cellObj =  tableView.cellForRow(at: IndexPath(row: sender.tag, section: 0)) as? UITableViewCell {
     print(\(cellObj.labelObj.text ?? ""))
    }
   }

关于swift - 快速获取 TableView 单元格内 uiswitch 值更改的标签值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58392615/

相关文章:

ios - 将数据从自定义 UITableViewCell 发送到详细信息 ViewController - Swift

iphone - switch.hidden = YES 不工作, socket 设置正确

ios - 动画 UISwitch 'onTintColor' 属性

ios - 如何将类型化数组转换为其中一种类型协议(protocol)?

ios - 我正在尝试制作一种选择器样式,例如设置中的外观选择器

ios - Firebase 查询相等(toValue :) not working

ios - 如果我在 TableView 中修改一行,那么它也会同时修改其他一些单元格。 (SWIFT编程)

ios - 使用 Accordion 样式平滑 UITableView 单元格扩展

ios - 选择单元格时,UITableViewCell 中的 UISwitch 会卡住应用程序,不会在 UISwitch 切换时卡住

swift - SpriteKit - 如何生成相似的角色?