2017-08-14 11 views
0

提案があります。私は流れの中で立ち往生した...私はどのようにさらに進めるか分からない。同じフィールドのビューが未定義のフォームを作成し、すべての値を最後に保存する

私の質問は次のとおりです。ユーザーが詳細を入力する必要があるフォームがあります。追加の詳細を入力するためにビューを追加できます(すべてのビューに同じテキストフィールドとラベルが含まれます)。最後に、すべてのデータを同じ順序で保存する送信ボタンがあります。私が試した

enter image description here

一つの流れは、このためにテーブルビューを作ることだったと、セルにこれらのテキストフィールドとラベルを追加し、ユーザーがクリックするボタンを追加するときにも、新しいセルを作成することができます。しかし、より多くの行が作成されたときにスタックし、私はフォームを提出しようとした。彼らはビューの外に行くと、セルを再利用するためにTableViewのプロパティであるので、私はViewから外のセルにアクセスできません。

誰でもこのフローの提案をいただけますか。私は感謝されます。

+0

値を別のオブジェクトに格納します。 'UITextFieldDelegate'を実装し、' didEndOnExit'や 'textFieldShouldReturn'メソッドを使って値を取得して保存することができます。送信ボタンをタップすると、送信オブジェクト内のすべての値が取得されます。それが理にかなってほしい。 – Pancho

+0

追加されたテキストフィールドの数に "count"を格納している場合は、テーブルのすべてのindexPathを取得できます。そこからセルを取得でき、最後にセルからテキストフィールドを取得できます。 –

+0

@SaurabhPrajapati表示されていないテーブルビューのセルの参照を取得できません。 – Pancho

答えて

0

テキストフィールドに含めるすべての情報を含むカスタムクラスを作成します。

class Entry { 
    var name: String 
    var mail: String 

    init(name: String, mail: String) { 
     self.name = name 
     self.mail = mail 
    } 
} 

これらの項目の配列を作成します。あなたのcellForRowAt機能で

var entries: [Entry] = [] 

func addEntry() { 
    entries.append(Entry(name: "defaultValue", mail: "defaultValue")) 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return entries.count 
} 

あなたはこれらのエントリ

let cell = tableView.dequeueReusableCell(...) as! ... 

cell.nameField = entries[indexPath.row].name 
cell.mailField = entries[indexPath.row].mail 

とテキストを編集した後、あなたがそれらを更新する必要がありますをお読みください。

entries[indexOfEditedItem].name = newName 
entries[indexOfEditedItem].mail = newMail 
関連する問題