2016-04-28 20 views
1

私は古いプロジェクトを再訪しており、indexPathForSelectedRowに関する説明を楽しむことができます。NSindexpathforselectedrowとの混乱

基本的には、この配列に類似した値1,2または3を表示する最初のテーブルビューがありました。

var array1 = ["1", "2", "3"] 

ユーザは1,2、または3を選択した後、それらは対応するネストされた配列の値を表示する第2のテーブルビューにseguedされるであろう。例えば

var array 2 = [["11", "12"], ["25", "27"], ["36", "39"]] 

ユーザが最初のテーブルビューに2を選択した場合、それらは、これは、このコード

を用いて達成された25および27

の値を含む第二のテーブルに運ばれることになります

if let destViewController = segue.destinationViewController as? RestaurantNameTable { 
let indexPath = self.tableView.indexPathForSelectedRow! 
destViewController.selectedRestaurants = array2[indexPath.section] 

ここは私の混乱です。

私は、indexPathForSelectedRowがセクションと行を参照していることを理解しています。

しかし、最初の配列を選択すると、セクションはなく、わずか3行です。それで、配列1(3行)のnsindexpathforselectedrowを使っても、array2の正しいセクション/配列を参照しているのはなぜですか?特に、配列2のセクションを参照している場合は?

他の言葉で言えば、私がarray1の行を選択した場合、セクションはありません....どのように私はarray2セクションが= indexpathにすべてのindexpathが単なる行であると言うことができるのですか# ?

array1で "2"を選択すると、セクション0と1の行がありますが、array2の内容は "255" & "27"のセクションは1ですか?このロジックはどのように機能しますか?

この質問の新しい表現をご希望の場合は、お尋ねください。私は自分自身が苦労している、ハハ。

お探しになり、助けていただきありがとうございます。

答えて

0

セクション番号はセクションの数を反映していません。セクション番号はセクションに割り当てられたIDです。したがって、array1の場合、最初のセクションには常に0が割り当てられているため、セクションは0になります。配列と同様に、配列の最初のインデックスが0である場合、最初のセクションは0です。

したがって、私はarray1に直面していると考えている問題は、1次元配列です。つまり、array1などの1次元配列の場合、 "indexPathForSelectedRow"を使用すると、メイン配列内の0番目の配列(セクション0)が検索され、その内部配列から行を取得しようとしています。したがって、配列が1つではないので配列が全く見つからないためです。あなたはこの(別のアレイ内で、その元の配列を入れた)やったのであれば:

let array1 = [["1", "2", "3"]] 

をして、これをした:

if let destViewController = segue.destinationViewController as? RestaurantNameTable { 
let indexPath = self.tableView.indexPathForSelectedRow! 
destViewController.selectedRestaurants = array2[indexPath.section] 

それは配列2とまったく同じように動作します。それは0番目の配列(セクション0)を取得してから、選択したインデックスパスに結びついた正しい行をつかむためです。