2017-01-23 14 views
0

私のプロジェクトでhttps://github.com/intuit/AnimatedFormFieldTableViewCellを使用したいと思っていますが、私はそれを設定するステップの周りに頭を上げることができません。これまでのところ、私はフォルダからファイルをドラッグして手順に従ってきた:AnimatedFormFieldTableViewCellを使用するためにはUITextFieldDelegateを実装しています

、あなたがしなければならないすべては、次のとおりです。

1)上のViewControllerにAnimatedFormFieldTableViewCellペン先を登録しますあなたの再利用識別子のためにあなたの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 
} 

注:あなたはまだUITextFieldDelegateあなたが定期的にUITextFieldの上で実装するのと同じ方法で実装することができ

1)、あなただけ(AnimatedFormFieldTableViewCellのデリゲートを定義する必要があり、直接のためのデリゲートを定義する必要はありません埋め込まれたUITextField)。

2)埋め込みUITextFieldにアクセスするには、単にセルのcellTextFieldプロパティを呼び出すことができます。

I don’t get these last two steps. 

私は私のアプリを実行すると、私はAnimatedFormFieldTableViewCellクラスでself.cellTextfield.delegate = selfunexpectedly found nilを取得します。

私には何が欠けていますか?

There is no need to directly define the delegate for the embedded UITextField

命令次の操作を実行することです:

You just need to define the AnimatedFormFieldTableViewCell's delegate

あなたはむしろcellTextFieldよりAnimatedFormFieldTableViewCellのデリゲートを設定することをお勧めします

+0

に応じて異なることに注意してくださいあなたもそのコードを含めることができますか?ドキュメントには、「埋め込みUITextFieldの代理人を直接定義する必要はありません。 'self.cellTextField.delegate'ではなく' self.delegate'をあなたの望む代理人に設定するべきでしょう。 –

+0

@MichaelFourre私はそれを取得しません。私は 'cellTextField'にアクセスしていません。 'UITextFieldDelegate'も実装していません。私は方法を知らない。私がエラーを受け取る 'self.cellTextField.delegate'は' AnimatedFormFieldTableViewCell'クラスで実装されており、私のものではありません。 – waseefakhtar

+0

@MichaelFourre 'cellTextField'にアクセスしていないのは、たぶん私が予期せず見つかったnilエラーです。しかし、私はそれを正しく実装するために段階を追っていきたいと思っています。 – waseefakhtar

答えて

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) 
    } 

} 

結果:

だから、

enter image description here

を、あなたが間違っているステップをチェックしてください。

+0

ありがとうございます。私は間違ったエラーの間違った記述を見ていることを知っていたので、私が実装したすべてのステップを投稿しました。しかし、誰も私がペン先を正しく登録していないと指摘しました。 – waseefakhtar

0

ドキュメントは、このノートの代議員、そう:

self.delegate = yourUITextViewDelegate

ではなくself.cellTextField.delegate = yourUITextViewDelegate(これは間違っている)

これは、ドキュメントが

編集を説明するものである:OPは、委任割り当てのコードは、そのクラスではないことを明らかにし、それはポッドのクラスにあります。私は問題を解決しているとは思わないので、この回答を削除することを検討しています。

+0

'AnimatedFormFieldTableViewCell'のデリゲートはどのように設定しますか?私はそれを実装したい 'viewDidLoad()'では?そして 'yourUITextViewDelegate'は何ですか? – waseefakhtar

+0

あなたの 'UITableViewController'の' tableView(_:cellForRowAt:) 'メソッドに' cell.delegate = self'を代入することによって 'delegate'を設定することができます。 'UITableViewController'が' UITextViewDelegate'プロトコルを採用していることを二重にチェックしたいと思います。@waseefakhtar –

+0

これまでに 'UITextFieldDelegate'を' UITableViewDataSource'の拡張と一緒に追加し、 'cell.delegate = self'を実装しました。 'UITextFieldDelegate'を追加しないとエラーが出ます: 'タイプ' MyClass 'の値を' UITextFieldDelegate 'に割り当てることができません' – waseefakhtar

2

こんにちはwaseefakhtarあなたのコードは何も見逃せません。ちょうど唯一の問題は、あなたがself.cellTextfield.delegate = selfunexpectedly found nilエラーを持っている理由です。

このコードを試してみてください。

let myNib = UINib.init(nibName: "AnimatedFormFieldTableViewCell", bundle: nil) 
    self.tableView.registerNib(myNib, forCellReuseIdentifier: "cell") 

PS:?ちょうどregisterNibメソッドの構文は迅速なバージョンあなたが `cellTextField`にアクセスしている

関連する問題