如何使用一个不是tableview成员的开关禁用tableview单元的所有文本字段?

时间:2019-01-29 06:13:44

标签: ios swift uitableview

我有一个带有tableViewCell的自定义textField,并且只有一个不是tableViewCell一部分的开关。

因此,我想在打开和关闭tableViewCell textFields时启用和禁用。那我该怎么办呢?

@IBAction func switchServiceTax_Action(_ sender: UISwitch) {


    let cell : tbleCell = tblViewServices.dequeueReusableCell(withIdentifier: "cell") as! tbleCell


   if switch.isOn{
        cell.txtFld.isUserInteractionEnabled = true
        tblView.reloadData()

   }else{
        cell.txtFld.isUserInteractionEnabled = false
    tblView.reloadData()


   }
}

2 个答案:

答案 0 :(得分:4)

有两种方法可以达到要求。

  1. cellforRow中,您可以直接在下面的行中使用此if-else代替 cell.txtFld.isUserInteractionEnabled = switch.isOn ,并确保每次切换开关时都重新加载表格视图。

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { return switch.isOn }

  1. 只需在 UITextFieldDelgate 下实现,仅此而已。无需重新加载tableview,因此可以提高应用程序性能。

    @IBAction weak var switchTextField: UISwitch!
    @IBAction func switchServiceTax_Action(_ sender: UISwitch) {
        tblView.reloadData()
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! TBLcell
        cell.txtFirstName.resignFirstResponder()
        cell.txtFirstName.isUserInteractionEnabled = switchTextField.isOn
        return cell
    }
    
    

答案 1 :(得分:3)

您可以在单元格中将开关对象用于“行”。这是简单的逻辑,请在下面编写并按照说明进行操作。

//Method call returns the free RAM currently and returned value is in bytes.
Runtime.getRuntime().freeMemory();

//Method call returns the total RAM currently and returned value is in bytes.
Runtime.getRuntime().maxMemory();