web-dev-qa-db-ja.com

迅速にTextfieldでUITableviewを作成する方法は?

各セルにテキストフィールドがあるテーブルビューを作成したいのですが、

Swift=ファイルにカスタムクラスがあります:

import UIKit

public class TextInputTableViewCell: UITableViewCell{

    @IBOutlet weak var textField: UITextField!
    public func configure(#text: String?, placeholder: String) {
        textField.text = text
        textField.placeholder = placeholder

        textField.accessibilityValue = text
        textField.accessibilityLabel = placeholder
    }
}

それから私のViewControllerで私は持っています

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

    let cell = tableView.dequeueReusableCellWithIdentifier("TextInputCell") as! TextInputTableViewCell

    cell.configure(text: "", placeholder: "Enter some text!")

     text = cell.textField.text

    return cell

}

それはうまくいきます:

enter image description here

しかし、ユーザーがテキストフィールドにテキストを入力してボタンを押すと、各テキストフィールドの文字列を配列に保存したいです。私は試しました

text = cell.textField.text
println(text)

しかし、空の場合のようには何も印刷されません

どうすればそれを機能させることができますか?

13
Zablah

View ControllerでUITextFieldDelegateになります

View Controller

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {

var allCellsText = [String]()

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

    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomTableViewCell

    cell.theField.delegate = self // theField is your IBOutlet UITextfield in your custom cell

    cell.theField.text = "Test"

    return cell
}

func textFieldDidEndEditing(textField: UITextField) {
    allCellsText.append(textField.text)
    println(allCellsText)
}
}

これにより、常にtextFieldのデータがallCellsText配列に追加されます。

13
Fred Faust

変数を作成する

_var arrayTextField = [UITextField]()
_

この後、func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{} add

_self.arrayTextField.append(textfield)
_

セルを返す前に、この後に値を表示するには

_for textvalue in arrayTextField{
        println(textvalue.text)
    }
_
2
knownUnknown

このメソッドはセルの初期化であるため、このデータを保存するモデルはありません。

text = cell.textfield.text

なんでもない!初期化できますvar textString viewcontrollerで、UITextFieldDelegateを継承します

optional func textFieldDidEndEditing(_ textField: UITextField)
{
     textString = _textField.text
}
optional func textFieldShouldReturn(_ textField: UITextField) -> Bool{
    return true
}

およびcell.textField.text = textString

1
user2680768