2016-04-11 13 views
0

でループ(if文で)のために私は、2つの配列を有する:スウィフト:cellForRowAtIndexPath

tasks = [a,b,c]clType = [a,a,b,c,c,c]

アレイtasksclTypeと同じであるが、if文私はforループを使用して、重複を除去しました。

ここでは、すべてのセクションがtasks配列の要素の1つであるセクションでテーブルビューを作成します。このセクションでは、clType配列の要素を右側のセクションの下に格納する必要があります。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 
    print(clType) 
    for index in tasks.indices{ 
     if indexPath.section == index{ 
     for index1 in clType.indices{ 
      if clType[index1] == tasks[index]{ 
      cell.textLabel?.text = clType[index1] + ": " + taskName[index1] + " // " + dateStamp[index1] //Taskname and dateStamp are arrays with a matching index with regard to clType. 
      } 
     } 
    } 
} 

    return cell 
} 

私はすでに正しい方向に向かっていると思うが、テーブルビューは正しいことが表示されていない:私はループ(複数可)については、以下でこれを設定しようとしました。私が今見ているのは3つのセクション(=正しい)ですが、そのセクションのすべての行は同じです。もちろん、すべてのセクションでアルファベット(a、b、c)は同じですが、taskNamedateStampは異なるはずです。

どのようにこれを修正できますか。私は論理に何かが欠けているのを知っていますが、何ですか?

+0

外側forループが必要ですか? "index = tasks [indexPath.section]"を実行できませんか? – onnoweb

+0

あなたの質問を正しく理解しているなら、最後に 'index1'を置いておきます。これは、私の配列を表示する正しいインデックスを決定するためです。それは内側のループでしょうか? –

+0

これを正しく行うには、「タスク」をセクションの見出しにし、「clType」を「タスク」の正しいセクション内の行にします。 「clType」をどのセクションでソートすべきかを決定する基準は何ですか? –

答えて

0

私はすでに自分でこの問題を解決しました。これは、すべての行について、ループが「セクションタイトル」と同じ最初の可能なインデックスで「一致」したことが原因で発生しました。私は次を追加しました:

.... 
if clType[index1] == tasks[index]{ 
     cell.textLabel?.text = clType[index1] + ": " + taskName[index1] + " // " + dateStamp[index1] //Taskname and dateStamp are arrays with a matching index with regard to clType. 
clType[index1] = "" //THIS IS WHAT I ADDED 
     } 

次回、配列をループしたときに、そのインデックスには一致しませんでしたが、次のインデックスに一致しました。これは私が欲しかったものです。