2016-11-04 18 views
0

テーブルビュー内のセルからテキストフィールドデータを順序付けられた方法で取得する方法を理解しようとしています。これまでは、各テキストフィールドに型データを取り出すことができました。ユーザーが最初のセル...最後のセルを編集する必要がありますが、正しい順序でこれを行うには、他の方法で、データが正しい順序ではありません。例についてはSwift(3.1)テーブルビューで動的に作成されたセルからオーダーされたTextFieldデータを取得する

私はプログラムを持っているが、テキストフィールドと5個の細胞、

  • テキストフィールド1を作成します。私はここ
  • 第二のTextField2を入力:私はここで第四
  • テキストフィールド3を入力:私は、入力されましたここに最初に
  • textfield4:ここに5番目に入力しました
  • textfield5:ここに3番目に入力しました

私が現在持っている方法は、データ配列が入力されたときとセルの順序でないときに基づいて格納されているため、dataArrayはこれと同じに見えます。 私は上記の例を入力したいのですが、私のデータは次のように出てくる:

  • テキストフィールド1:私はここに最初に入力された
  • のTextField2:私はここ二型付け
  • テキストフィールド3:私はここに第三
  • を入力しました
  • テキストフィールド4:私はここで第四
  • テキストフィールド5を入力:私はここにここに

第五を入力したが、私のテキストフィールドの編集コードです:

@IBAction func TitleEditBegin(_ sender: UITextField) { 
} 

@IBAction func TitleEditEnd(_ sender: UITextField) { 
    print(sender.tag) // Debug 
    titleArray.append(sender.text!) 
} 

当面、他の変更がtitleArrayに追加されることはわかっていますが、まず注文の問題を解決したいと思います。

ありがとうございます!

編集:私は、細胞を作成していますどのように追加するのを忘れ、以下のコードは、次のとおりです。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = TitleSessionTableView.dequeueReusableCell(withIdentifier: textCellIdentifier, for: indexPath) as! TitleSessionCell 

    cell.SessionTitleLabel.text = "Title" 
    // cell.SessionTitleField.text = "Default" 
    cell.SessionTitleField.tag = indexPath.row 
    cell.SessionTitleField.delegate = self 
    print(indexPath.row) // Debug 

    return cell 

} 

はEDIT 2:私は、テキストフィールドを定義しを追加します。

import Foundation 
import UIKit 

class TitleSessionCell: UITableViewCell{ 

@IBOutlet weak var SessionTitleField: UITextField! 
@IBOutlet weak var SessionTitleLabel: UILabel! 


override func awakeFromNib() { 
    super.awakeFromNib() 
} 


} 

答えて

0

最も簡単な方法は、私が信じる辞書を使うことです。私はすべてのtextFieldsに別のタグを割り当てます。したがって、textField1の場合はtextField1.tag = 1となります。私はあなたのテキストフィールドの作成を見ていないので、それを追加する最良の方法を示すのは難しいですが、それを処理した後、辞書をクラス変数として作成します。

var textFieldDictionary: [Int: String] = [:] 

、その後、そのようにそれにテキストを追加します:

if sender.text != nil && sender.text != "" { 
    textFieldDictionary[sender.tag] = sender.text 
} 

、あなたが情報を取得したい、このような何か:ちょうど

for i in 0..<biggestTextFieldNumber { 
    if let text = textFieldDictionary[i] { 
     //do something with text 
     print(text) 
    } 
} 

かでした

textFieldDictionary[numberYouWant] 
を使用して、必要なときに特定の数値の値を取得します。 210

私はこれが助けてくれることを願っています!

+0

私の今の問題は、最初に編集されたテキストフィールドにsender.tag = 0が与えられていることです。それが起こると、それ以外のものはすべて消えてしまいます。それをタグにするためにセルを呼び出す方法はありますか? – rutheferd

+0

あなたcellForRow関数を投稿することができます – Sethmr

+0

編集しました – rutheferd

関連する問題