【问题标题】:how to enable button when all textfields filled in tableviewcell(SWIFT)当所有文本字段都填写在uitableviewcell(SWIFT)中时如何启用按钮
【发布时间】:2018-10-26 08:54:20
【问题描述】:

我想在表格视图单元格中填写文本字段时启用视图控制器中的按钮。

我不知道如何解决这个问题。

对不起。我英语不成熟。

  1. button(viewController) isEnable = false
  2. 填充文本字段(在 tableviewcell 内)
  3. button(viewController) isEnable = true

1。视图控制器

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {

    @IBOutlet var tableView: UITableView!
    @IBOutlet var viewLabel: UILabel!
    @IBOutlet var clickBtn: UIButton!

    var cell: CustomTableViewCell!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.clickBtn.isEnabled = false
        cell.textFieldCell.addTarget(self, action: #selector(editingChanged), for: .editingChanged)
        cell.textFieldCell2.addTarget(self, action: #selector(editingChanged), for: .editingChanged)
    }

    @objc func editingChanged(sender: UITextField) {

        sender.text = sender.text?.trimmingCharacters(in: .whitespaces)

        guard
            let text1 = cell.textFieldCell.text, !text1.isEmpty,
            let text2 = cell.textFieldCell2.text, !text2.isEmpty
            else
        {
            self.clickBtn.isEnabled = false
            return
        }
        clickBtn.isEnabled = true
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! CustomTableViewCell
        return cell
    }
}

2。自定义表格视图

import UIKit

class CustomTableViewCell: UITableViewCell, UITextFieldDelegate {

    @IBOutlet var myLabel: UILabel!
    @IBOutlet var textFieldCell: UITextField!
    @IBOutlet var textFieldCell2: UITextField!
}

【问题讨论】:

  • 检查这是否有帮助。 stackoverflow.com/questions/52063413/…
  • 内部 viewDidLoad 单元格值将为零,并且它仅引用最后一个单元格,因此不要放置全局单元格。由于表格视图的可重用单元格,您需要维护数组以检查 tex 字段值是否为字段

标签: ios swift xcode swift4


【解决方案1】:

由于表格视图只包含一个单元格,您为什么要使用表格视图?
如果你真的需要使用表格视图,为什么不使用 static 单元格?


一个简单的解决方案是将目标/操作代码从viewDidLoad 移动到单元格的didSet 属性观察者中

var cell: CustomTableViewCell! {
    didSet {
        cell.textFieldCell.addTarget(self, action: #selector(editingChanged), for: .editingChanged)
        cell.textFieldCell2.addTarget(self, action: #selector(editingChanged), for: .editingChanged)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    self.clickBtn.isEnabled = false
}

【讨论】:

    【解决方案2】:

    一种选择是使用委托。

    protocol CustomTableViewCellDelegate  { 
        func editingChanged(_ String: yourString)    
    } 
    

    在表格视图单元格中

    class TableViewCell: UITaleViewCell { 
        // declare the delegate 
        var delegate: CustomTableViewCellDelegate? 
        // and pass it like this from where you want to pass 
        delegate?.editingChanged(cookie) 
    }
    

    用于在 tableViewController 中使用。首先在 indexpath 方法中将委托分配给单元格中的 self 。然后在其中实现委托。

    extension CustomTableViewController: CustomTableViewCellDelegate { 
        func editingChanged(String: yourString) { 
        // use it accordingly 
        } 
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多