Swift下拉插入表单

时间:2016-02-21 19:36:04

标签: ios swift

我迷路了。

我有一个TableViewController,它是从一个集合中以编程方式填充的。我需要在下拉tableView时显示一个表单。现在我有一个包含两个textField的InsertControl。 InsertControl

class InsertControl: UIView {

//MARK: Properties
var name = ""
var quantity = 0

//MARK: Initialization
required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    let nameTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 260, height: 44))
    nameTextField.backgroundColor = UIColor.redColor()

    let quantityTextField = UITextField(frame: CGRect(x: 270, y: 0, width: 60, height: 44))

    quantityTextField.backgroundColor = UIColor.redColor()

    addSubview(nameTextField)
    addSubview(quantityTextField)
}

override func intrinsicContentSize() -> CGSize {
    return CGSize(width: 350, height: 44)
}
}

然后我发现我可以把这个控件放在tableView标题中,所以我在

中有这个代码

tableViewController

let insertControl = InsertControl()
    self.tableView.tableHeaderView = insertControl

    self.tableView.contentOffset = CGPoint(x: 0, y: 44)

问题是我需要向InsertControl构造函数提供一个我没有的NSCoder。

我设法在标题中获取表单后,如何进一步向下滑动到控件并将其添加到tableView集合?

我希望我足够清楚。

1 个答案:

答案 0 :(得分:0)

要回答您的第一个问题,请在InsertControl中使用override init(frame: CGRect)代替required init?(coder aDecoder: NSCoder)。它看起来像这样:

 override init(frame: CGRect) {
        super.init(frame: frame)

        let nameTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 260, height: 44))
        nameTextField.backgroundColor = UIColor.redColor()

        let quantityTextField = UITextField(frame: CGRect(x: 270, y: 0, width: 60, height: 44))

        quantityTextField.backgroundColor = UIColor.redColor()

        addSubview(nameTextField)
        addSubview(quantityTextField)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func intrinsicContentSize() -> CGSize {
        return CGSize(width: 350, height: 44)
    }