2016-04-04 5 views
0

У меня есть очень интересная проблема:СВИФТ: сортировка TableView и передавать данные на второй ViewController

У меня есть два контроллера вида: FirstViewController и SecondViewController.

В FirstViewController есть вид таблицы.

Существует кнопка для заказа строк в таблице.

Существует точка между контроллерами.

//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, Банк2, Bank3. Функции сортировки работают хорошо - он обновляет мою таблицу. Скажем, после сортировки у нас есть новая последовательность: Bank3, Bank2, Bank1.

Так что в конце концов - проблема в том, что я использую segue для экспорта значений в secondViewController. Он отлично работает, если я не использую сортировку. Но если я это сделаю, он передает значения, как это было бы до сортировки.

E.G. без сортировки, если я нажимаю верхнюю строку, он будет экспортировать bank1.

но. после сортировки у нас есть Bank3 в верхней строке, но он по-прежнему переносит Bank1 на secondViewController.

Может ли кто-нибудь объяснить, что мне не хватает? Спасибо.

ответ

2

Похоже, что в changeSorting вы обновляете массив под названием arrayOfBanks. Я предполагаю, что этот массив является вашим источником данных. Но в prepareForSegue вы используете путь указателя к выбранной строке для доступа к словарю с именем bankDict. Этот словарь не был затронут методом сортировки, поэтому его порядок будет таким же, как и раньше.

+0

Да, глупая ошибка! моя вина! Спасибо за ваш ответ – Almazini