У меня есть табличное представление с панелью поиска. Методы поиска в порядке, хорошо работают. У меня проблема с 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. Смущенный?
Как вы связали эти 2 контроллера в UIStoryboard? – iRiziya
Выполнение segue (показ) с помощью Xcode с именем ** DisplayViewSegue ** – Mehmet