我想在我的项目中使用https://github.com/intuit/AnimatedFormFieldTableViewCell,但我无法理解设置它的步骤。到目前为止,我已从文件夹中拖动文件,并按照以下步骤操作:
要使用AnimatedFormFieldTableViewCell
,您所要做的就是:
1)在ViewController上注册AnimatedFormFieldTableViewCell
nib,在其上实现UITableView以获得重用标识符。
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerCellNib(AnimatedFormFieldTableViewCell)
tableView.reloadData()
}
2)将CellForRowAtIndexPath上的单元格作为AnimatedFormFieldTableViewCell出列。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! AnimatedFormFieldTableViewCell
return cell
}
3)通过在单元格本身上调用setLabelText来更改占位符的标签文本。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! AnimatedFormFieldTableViewCell
cell.setLabelText("Enter title")
return cell
}
注意:
1)你仍然可以像在常规UITextField上实现的那样实现UITextFieldDelegate,你只需要定义AnimatedFormFieldTableViewCell的委托(不需要直接定义嵌入式UITextField的委托)。 / p>
2)为了访问嵌入式UITextField,您只需调用单元格的cellTextField属性。
I don’t get these last two steps.
如果我运行自己的应用,我会在unexpectedly found nil
课程的self.cellTextfield.delegate = self
上获得AnimatedFormFieldTableViewCell
。
我错过了什么?
答案 0 :(得分:2)
您好waseefakhtar您的代码不会遗漏任何内容。唯一的问题是您使用错误的方式注册了笔尖,这就是unexpectedly found nil
上出现self.cellTextfield.delegate = self
错误的原因。
试试这段代码:
let myNib = UINib.init(nibName: "AnimatedFormFieldTableViewCell", bundle: nil)
self.tableView.registerNib(myNib, forCellReuseIdentifier: "cell")
PS:请注意,registerNib方法的语法可能会有所不同,具体取决于swift版本
答案 1 :(得分:1)
我的代码在这里,我不知道您的文书错误在哪里,但您可以查看我的代码以找出:
import UIKit
class ViewController2: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// register a nib like below
let nib:UINib = UINib.init(nibName: "AnimatedFormFieldTableViewCell", bundle: nil)
self.tableView.register(nib, forCellReuseIdentifier: "AnimatedFormFieldTableViewCell")
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 88.0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "AnimatedFormFieldTableViewCell", for: indexPath as IndexPath) as! AnimatedFormFieldTableViewCell
cell.setLabelText("Enter title")
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
}
结果:
所以,只需检查出错的步骤。
答案 2 :(得分:0)
文档说明了这一点:
There is no need to directly define the delegate for the embedded UITextField
说明是执行以下操作:
You just need to define the AnimatedFormFieldTableViewCell's delegate
您需要设置AnimatedFormFieldTableViewCell
的委托而不是cellTextField
的委托,所以:
self.delegate = yourUITextViewDelegate
而不是self.cellTextField.delegate = yourUITextViewDelegate
(这是错误的)
这是文档描述的内容
编辑:OP澄清了委托分配代码不属于他们的类;它在pod的课堂上。我正在考虑删除这个答案,因为我认为它没有解决问题。