SWIFT:对TableView进行排序并将数据传递给第二个viewController

时间:2016-04-04 19:57:01

标签: ios swift uitableview segue

我有一个非常有趣的问题:

我有两个视图控制器:FirstViewController和SecondViewController。

FirstViewController中有表视图。

有一个按钮可以在表格中订购行。

视图控制器之间存在segue。

//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"]!)

        }

想象一下,我们在表格中有三行具有不同的银行名称:Bank1,Bank2,Bank3。排序功能运行良好 - 它更新我的表。让我们说排序后我们有了新的序列:Bank3,Bank2,Bank1。

毕竟 - 问题是当我使用segue将值导出到secondViewController时。如果我不使用排序,它的工作正常。但是,如果我这样做,它会在排序之前传递值。

E.G。没有排序,如果我按顶行,它将导出bank1。

但是。排序后,我们在顶行有Bank3,但它仍然将Bank1传输到secondViewController。

有人可以解释我错过了什么吗? 感谢。

1 个答案:

答案 0 :(得分:2)

changeSorting中,您更新了一个名为arrayOfBanks的数组。我假设这个数组是你的数据源。但是在prepareForSegue中,您使用所选行的索引路径来访问名为bankDict的字典。这个字典没有被排序方法所触及,所以它的排序与以前一样。