我迷路了。
我有一个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集合?
我希望我足够清楚。
答案 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)
}