自定义单元格委托和UITextField(swift)

时间:2015-04-04 16:57:00

标签: uitableview swift uitextfield custom-cell

目标是每次点击任何其他行时创建新的表行。所有行都包含UITextField,这就是问题所在。

主控制器:

var subtasksArray = ["one", "two"]
var addRow = 0

class AddEditTaskController: UIViewController, UITableViewDataSource,
UITableViewDelegate, CustomCellDelegate {

    func reloadTable() {
        subtaskTable.reloadData()
    }

    @IBOutlet weak var subtaskTable: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        var tblView =  UIView(frame: CGRectZero)
        subtaskTable.tableFooterView = tblView
        subtaskTable.tableFooterView?.hidden = true
        subtaskTable.backgroundColor = UIColor.clearColor()
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return subtasksArray.count + addRow
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var cell: SubtaskCell = subtaskTable.dequeueReusableCellWithIdentifier("subtaskCell") as SubtaskCell

        cell.delegate = self 
        return cell 
    }

自定义单元格:

protocol CustomCellDelegate {
    func reloadTable()
}

class SubtaskCell: UITableViewCell, UITextFieldDelegate {

    var delegate: CustomCellDelegate?

    @IBOutlet weak var subtaskTextField: UITextField!

    var subtasksArray = [String]()

    override func awakeFromNib() {
        super.awakeFromNib()

        subtaskTextField.delegate = self
    }

    func textFieldDidBeginEditing(textField: UITextField) {
        addRow += 1
        delegate?.reloadTable() 
    }

    func textFieldDidEndEditing(textField: UITextField) {

        subtasksArray.append(subtaskTextField.text)
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
}

问题是如果点击任何一行,则会创建一个新行,但文本字段不活动。

如果我不使用CustomCellDelegate,单元格中的文本字段工作正常,但除了单元格委托之外,我无法找到重新加载表格的其他方法。

0 个答案:

没有答案