2015-07-13 7 views
0

У меня есть табличное представление с панелью поиска. Методы поиска в порядке, хорошо работают. У меня проблема с didSelectRowAtIndexPath часть.Swift: Tableview и панель поиска отправляют нулевой объект в первый раз с segue

Когда я выбираю элемент списка (ячейку), необходимо передать этот элемент в следующую сцену с помощью сегмента.

Но когда я выбираю ячейку для отображения деталей товара;

первый выбор: нулевой объект, второй выбор: первый объект, третий выбор: второй объект переходит к следующей сцене.

Мой автомобиль класса:

class Vehicle { 
    var owner : String 
    var plate : String 
    var location : String 
    var isOnline : String 
    var state : String 
    var speed : String 
    var driver : String 
    var maxSpeed : String 
    var dailyOverSpeed : String 
    var energy : String 
    var firstEngineDate : String 
    var messageDate : String 
    var dailyKm : String 
    var totalMoving : String 
    var totalWaiting : String 
    var totalParking : String 
    var totalKm : String 


    init() { 
     self.owner = "" 
     self.plate = "" 
     self.location = "" 
     self.isOnline = "" 
     self.state = "" 
     self.speed = "" 
     self.driver = "" 
     self.maxSpeed = "" 
     self.dailyOverSpeed = "" 
     self.energy = "" 
     self.firstEngineDate = "" 
     self.messageDate = "" 
     self.dailyKm = "" 
     self.totalMoving = "" 
     self.totalWaiting = "" 
     self.totalParking = "" 
     self.totalKm = "" 
    } 

    init(owner: String, plate: String, location: String, isOnline: String, state: String, speed: String, driver: String, maxSpeed: String, dailyOverSpeed: String, energy: String, firstEngineDate: String, messageDate: String, dailyKm: String, totalMoving: String, totalWaiting: String, totalParking: String, totalKm: String) { 
     self.owner = owner 
     self.plate = plate 
     self.location = location 
     self.isOnline = isOnline 
     self.state = state 
     self.speed = speed 
     self.driver = driver 
     self.maxSpeed = maxSpeed 
     self.dailyOverSpeed = dailyOverSpeed 
     self.energy = energy 
     self.firstEngineDate = firstEngineDate 
     self.messageDate = messageDate 
     self.dailyKm = dailyKm 
     self.totalMoving = totalMoving 
     self.totalWaiting = totalWaiting 
     self.totalParking = totalParking 
     self.totalKm = totalKm 
    } 
} 

Мой TableView контроллер:

class VehiclesTableViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, UISearchDisplayDelegate{ 
... 
    var vehicles = [Vehicle]() 
    var filteredVehicles = [Vehicle]() 
    var selectedVehicle = Vehicle() 
..... 
} 

didSelectRowAtIndexPath:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     if (tableView == self.tableView) { 
      self.selectedVehicle = vehicles[indexPath.row] 
     } else { 

      self.selectedVehicle = filteredVehicles[indexPath.row] 
     } 


     println(self.selectedVehicle.plate) 

    } 

prepareForSegue:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "DisplayViewSegue" { 
      var nextScene = segue.destinationViewController as! DisplayViewController 
      nextScene.currentVehicle = self.selectedVehicle 


     } 
    } 

Когда я выбираю любую ячейку (с поиском или без поиска) мой Println() работает corrent, который находится в didSelectRowAtIndexPath. Смущенный?

+0

Как вы связали эти 2 контроллера в UIStoryboard? – iRiziya

+0

Выполнение segue (показ) с помощью Xcode с именем ** DisplayViewSegue ** – Mehmet

ответ

0

Похоже, что у вас может быть панель поиска в качестве верхнего элемента таблицы, так что, когда вы получаете элемент из своего транспортного массива, он должен быть indexPath.row-1. Также, если вы только перейдете, когда вы выберете строку, вы можете получить доступ к индексу напрямую с помощью self.tableview.indexPathForSelectedRow() и использовать это, чтобы получить правильное транспортное средство. Это исправляет вашу проблему.

Смежные вопросы