web-dev-qa-db-fra.com

Comment créer UITableview avec Textfield en un rien de temps?

Je veux créer une vue tabulaire avec des champs de texte dans chaque cellule,

J'ai une classe personnalisée dans un fichier 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
    }
}

Ensuite, dans mon ViewController, j'ai

 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

}

Cela fonctionne bien:

enter image description here

Mais lorsque l'utilisateur saisit du texte dans le champ de texte et appuie sur le bouton, je veux stocker les chaînes de chaque champ de texte dans un tableau. J'ai essayé avec

text = cell.textField.text
println(text)

Mais il n'imprime rien comme s'il était vide

Comment puis-je le faire fonctionner?

13
Zablah

Dans votre contrôleur de vue, devenez un UITextFieldDelegate

Afficher le contrôleur

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

Cela ajoutera toujours les données de textField au tableau allCellsText.

13
Fred Faust

créer une variable

var arrayTextField = [UITextField]()

après cela dans votre func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{} ajoutez

self.arrayTextField.append(textfield)

avant de retourner la cellule, après cela pour afficher les valeurs en utilisant

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

cette méthode consiste à initier la cellule, vous n'avez pas de modèle pour enregistrer ces données, donc

text = cell.textfield.text

c'est rien! vous pouvez initier var textString dans viewcontroller, un UITextFieldDelegate hérité

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

et cell.textField.text = textString

1
user2680768