2016-04-04 10 views
0

にデータを渡す:FirstViewControllerとSecondViewController:私は2つのビューコントローラを持ってSWIFT:テーブルビューをソートして、私は非常に興味深い問題が持っている第二のViewController

を。

FirstViewControllerにテーブルビューがあります。

テーブルに行を並べ替えるためのボタンがあります。

ビューコントローラの間にはセグがあります。バンク1、バンク2、バンク3:

//MARK: Sorting function: 
func changeSorting(buttonTag: Int) { 

     let button = self.view.viewWithTag(buttonTag) as? UIButton 
     let buttonName = (button?.currentTitle)! as String 

     //Apply Sorting to table: 

      arrayOfBanks.sortInPlace { 
       item1, item2 in 

       let val1 = item1["sellRate"] as! Double 
       let val2 = item2["sellRate"] as! Double 

       if buttonName == "0-9⬇︎" { 
        return val1 > val2 
       } else { 
        return val2 > val1 
       } 
      } 
     self.tableView.reloadData() 

}

//MARK: Navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "showCalculator" { 
      let viewController = segue.destinationViewController as! SecondViewController 
      let indexPath = tableView.indexPathForSelectedRow?.row 

      print(indexPath!) 

      viewController.bn = self.bankDict[indexPath!]["bankName"]! as! String 
      viewController.cn = self.bankDict[indexPath!]["currencyName"]! as! String 
      viewController.br = String(self.bankDict[indexPath!]["sellRate"]!) 
      viewController.sr = String(self.bankDict[indexPath!]["buyRate"]!) 

     } 

は、我々は別の銀行名を持つテーブルに3列を持っていることを想像してみてください。並べ替え関数はうまくいきます - テーブルを更新します。並べ替え後、新しいシーケンス:Bank3、Bank2、Bank1があります。

結局のところ、問題はsegueを使用してsecondViewControllerに値をエクスポートするときです。並べ替えを使わないとうまく動作します。しかし、もし私がするならば、それはソートする前と同じように価値を移します。

E.G.ソートせずに一番上の行を押すとbank1がエクスポートされます。

でも。ソート後、一番上にBank3がありますが、それでもBank1はsecondViewControllerに転送されます。

誰かが私が行方不明を説明することはできますか?おかげさまで

答えて

2

changeSortingのように、arrayOfBanksという配列を更新します。私はこの配列があなたのデータソースだと仮定します。しかし、prepareForSegueでは、選択した行のインデックスパスを使用して、bankDictという辞書にアクセスします。この辞書は並べ替え方法に触れられなかったので、順序は以前と同じになります。

+0

ええ、愚かな間違い!私の悪い!お返事をありがとうございます – Almazini

関連する問題