我有一个带有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()
}
}
答案 0 :(得分:4)
有两种方法可以达到要求。
cellforRow
中,您可以直接在下面的行中使用此if-else
代替 cell.txtFld.isUserInteractionEnabled = switch.isOn
,并确保每次切换开关时都重新加载表格视图。 func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return switch.isOn
}
只需在 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();