Я заполняю таблицу данными, и все работает по назначению, включая переход деталей каждой строки к другой сцене. Закидываю туда поисковую строку (программно - с помощью нового searchController'а) и она успешно перезагружает исходную таблицу с любыми найденными результатами.
ОДНАКО, при касании выбранной строки после поиска, пройденный переход - это переход исходной строки таблицы, которая оказалась в той же позиции, что и та, к которой прикоснулись сейчас! (т. е. если я выберу текущую вторую строку поиска, следующая сцена перейдет к деталям второй строки исходной таблицы!)
Так как же предоставить функции prepareForSegue мою правильную строку после поиска?
Это создание ячейки:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
if (self.resultSearchController.active) {
cell.textLabel?.text = filteredTableData[indexPath.row]
return cell
}
else {
cell.textLabel?.text = TableTitle[indexPath.row]
return cell
}
}
А это функция поиска:
func updateSearchResultsForSearchController(searchController: UISearchController)
{
filteredTableData.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text)
let array = (the_tableData as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]
self.tableView.reloadData()
}
и это продолжение:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using [segue destinationViewController].
var thirdScene = segue.destinationViewController as! customer_details_View_Controller
if let indexPath = self.tableView.indexPathForSelectedRow() {
thirdScene.basics = the_basics[indexPath.row]
thirdScene.p_method = the_p_method[indexPath.row]
thirdScene.notes = the_notes[indexPath.row]
}
// Pass the selected object to the new view controller.
}