2016-11-16 5 views
1

私は、目的のUIViewControllerが配列から適切なインデックスを呼び出すことによってラベルにテキスト情報を表示できるように、tableViewController内のinfo(選択されたセルのインデックス)を転送する設定を持っています。これはすべて正しく動作します。しかし、3つのセクションがあり、目的のUIViewControllerでどのセクションが選択されたのかを知りたいです。 (すなわち、セクション1の最初のセルとセクション2の最初のセルの両方を選択すると0のインデックスが返されますが、区別が必要です)。私は、選択したセクションの値を渡すことを考えた(そして、宛先UIViewControllerでif/elseステートメントを設定する)が、それを適切に行う方法がわかりません。 はここで非差別インデックスパスの私が持っている現在のコードされていますセクション間を区別するためにdidSelectRowAt IndexPathを取得する方法は?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     let indexPath = self.tableView.indexPathForSelectedRow 
     let rowSelectedd = indexPath?.row 
     let destViewController: Controller = segue.destination as! Controller 
     destViewController.rowSelected = rowSelectedd! 
    } 

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     performSegue(withIdentifier: "rowSelected", sender: rowSelectedd) 
    } 

は基本的に、どのように私は、選択したセルの部分の値を渡すのですか?

+0

'didSelectRowAt'メソッドの中で' rowSelectedd'とは何ですか?それもコンパイルされません。 – rmaddy

答えて

1

先コントローラは、代わりInt性のIndexPathプロパティを使用し、代わりにちょうどindexPath.row全体indexPathを渡し、選択された行の行とセクションの両方を必要とする場合。

しかし、なぜ宛先コントローラはインデックスパスを知る必要がありますか?それは意味をなさない。そのインデックスパスの実際のデータを(データモデルから)宛先コントローラに渡すのはなぜですか?

+0

は、そのセル内のデータが一連の配列からの反復(​​すべて同じインデックスからのもの)に由来するためです。私はもっ​​と大きなページにそれらを表示したいので、indexpath.rowの値を使って同じ配列を繰り返し処理すると思いました。代わりにデータをどのように転送するのですか? –

+0

1)あなたのデータはたくさんの配列にあるべきではありません。 1つの配列にする必要があります。 2)インデックスパスの代わりにデータを渡すには、行またはインデックスパスの代わりにデータのプロパティを作成します。 – rmaddy

+0

多次元配列を参照していますか?私のデータはフォームのクエリーがDBから取り出され、クエリーされたオブジェクトの異なるプロパティが異なる配列に追加されるためです。あなたが多次元配列を意味しない限り、配列の束なしで私がそれをどうやってやるのか分かりませんか? –

関連する問題