2017-04-23 18 views
3

この質問はまだドキュメントには記載されておらず、このタグを監視して回答しているため、ここで質問してください。 Eurekaを使用して複数値フォームを作成しています。 これは私のコードです:ユーレカフォームの多値セクションからフォーム値を取得

+++ MultivaluedSection(multivaluedOptions: [.Reorder, .Insert, .Delete], 
     header: "Options", 
     footer: "footer") { 
          $0.addButtonProvider = { section in 
           return ButtonRow(){ 
            $0.title = "Add New Option" 
           } 
          } 
          $0.multivaluedRowToInsertAt = { index in 
           print(self.form.values()) 
           return NameRow() { 
            $0.placeholder = "Your option" 
           } 
          } 
          $0 <<< NameRow() { 
           $0.placeholder = "Your option" 
          } 
    } 

は今、私は最後にNameRows内のすべての値を抽出したいです。行数は(ユーザー入力に基づいて)任意の数にすることができます。これは私が試したものです:

self.form.values() しかし、結果は[ : ]になります。

どのようにすべての値を取得できますか?同様の問題を持つ人のために

答えて

5

:行に与えられた何のタグがなかったので

form.values()が空にされていました。 formから値を取得するには、行にタグを付けると、これらのタグとしてキーを持つ値の辞書が取得されます。この場合の

+++ MultivaluedSection(multivaluedOptions: [.Reorder, .Insert, .Delete], 
          header: "header", 
          footer: "footer") { 
          $0.addButtonProvider = { section in 
           return ButtonRow(){ 
            $0.title = "Button Title" 
           } 
          } 
          $0.multivaluedRowToInsertAt = { index in 
           return NameRow("tag_\(index+1)") { 
            $0.placeholder = "Your option" 
           } 
          } 
          $0 <<< NameRow("tag_1") { 
           $0.placeholder = "Your option" 
          } 
    } 

今の値は、ユーザによって挿入された行の任意の数の["tag_1" : "value 1", "tag 2 : "value 2" ....]として返されます。
P.S .:重複タグが許可されておらず、indexの値が異なる行に異なるため、タグにindexを使用しました。

0

form.values()はDictionaryを返し、Dictionaryには注文情報がありません。
したがって、form.values()からReordered値を取得することはできません。

Iは以下のようにorderdデータを得た:
(form.allRows戻り配列を、その注文情報を有する)

0

としては、単にそれぞれの行にタグを与えるhere 記載

// Dictionary doen't have order info. 
let values: Dictionary = form.values() 
NSLog("LogA : %@", values) 

// Array has order info, and this can return all tags. 
let allRow: Array<BaseRow> = form.allRows 
for i in 0..<allRow.count { 
    let tmp: BaseRow = allRow[i] 
    NSLog("LogB : %d : %@", i, tmp.tag ?? "") 
} 

// So make ordered data by from.values() and form.allRows like this. 
var results: Array = [String]() 
for i in 0..<allRow.count { 
    let tag: String = allRow[i].tag ?? "" 
    if(tag != ""){ 
     let val: String = values[tag] as! String 
     results.append(tag + ":" + val) 
    } 
} 
NSLog("LogC = %@", results) 

おかげ;

<<< NameRow() { 
$0.tag = "NameRow" 
$0.title = "Name:" 
$0.value = "My name" } 
+0

上記の回答に同じことが記載されています – sasquatch

関連する問題