gpt4 book ai didi

ios - 当文本字段中有文本时如何启用 UITableView

转载 作者:搜寻专家 更新时间:2023-11-01 05:54:35 24 4
gpt4 key购买 nike

我有两个 textFields 和一个 TableViewTableview 最初应该被禁用(意味着 labels 变灰并且 cells 不可点击)。当 textFields 都有值时,我希望 TableViewtableViewCells 可以点击而不是变灰。到目前为止,我已将目标添加到两个 textfields 以跟踪用户何时编辑:

var isUserEditing: Bool = false

func setup() {
mealItemTextField.addTarget(self, action: #selector(userIsEditing), for: UIControl.Event.editingChanged)
priceTextField.addTarget(self, action: #selector(userIsEditing), for: UIControl.Event.editingChanged)
}

@objc func userIsEditing(sender: UITextField) {
sender.text = sender.text?.trimmingCharacters(in: .whitespaces)
guard
let mealtext = mealItemTextField.text, !mealtext.isEmpty,
let pricetext = priceTextField.text, !pricetext.isEmpty
else
{
isUserEditing = false
return
}
isUserEditing = true
}

然后我为 UITableViewCell 创建了一个扩展,基本上“启用”和“禁用”tableView(从 this 线程中检索):

  extension UITableViewCell {
func enable(on: Bool) {
for view in contentView.subviews {
view.isUserInteractionEnabled = on
view.alpha = on ? 1 : 0.5
}
}
}

最后,我在我的 viewForHeaderInSection 中实现了这个方法以及变量 isUserEditing:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let userModel = Data.userModels[section]
let cell = tableView.dequeueReusableCell(withIdentifier: "nameCell") as! NameHeaderTableViewCell
cell.setup(model: userModel)
cell.enable(on: false)
if isUserEditing == true {
cell.enable(on: true)
}
return cell.contentView
}

加载 View 时,tableView 显示为“已禁用”,但是当我开始输入一个或两个 textFields 时,它仍然处于禁用状态。所以很明显 viewForHeaderInSection 没有重新加载,也没有被再次执行。

有什么办法可以实现吗?我可以实时运行 viewForHeaderInSection 并自动更新吗?感谢任何帮助,谢谢!

This should be the initial view when there is no text in the textField

This should be the view after there is some text in both textFields

最佳答案

tableView.reloadData() 由于未重新加载 TableView 而丢失。

@objc func userIsEditing(sender: UITextField) {
sender.text = sender.text?.trimmingCharacters(in: .whitespaces)
guard
let mealtext = mealItemTextField.text, !mealtext.isEmpty,
let pricetext = priceTextField.text, !pricetext.isEmpty
else
{
isUserEditing = false
tableView.reloadData() // reload table view here
return
}
isUserEditing = true
tableView.reloadData() // reload table view here
}

关于ios - 当文本字段中有文本时如何启用 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56537725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com