我有一個非常奇怪的問題,我的tableView,有時你點擊一個單元格,然後繼續,因爲它應該,但其他時間,它會繼續隨機detailViewController。 我有3個塞格斯從包含一個UIViewController連接的tableview:UITableViewCell Segue SOMETIMES連接到錯誤的控制器
的塞格斯「本模態」一detailViewController並傳遞一個自定義對象「地點」的detailViewController
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("PLACE SELECTED: SECTION \(indexPath.section) ROW \(indexPath.row) :: \(my_sections[indexPath.section])")
self.selectedPlace = my_sections[indexPath.section].rows[indexPath.row]
let buttons_count = self.selectedPlace!.buttons.count
switch buttons_count {
case 0:
self.performSegue(withIdentifier: SegueIdentifier.NoButton.rawValue, sender: self.tableview.cellForRow(at: indexPath))
case 1:
self.performSegue(withIdentifier: SegueIdentifier.OneButton.rawValue, sender: self.tableview.cellForRow(at: indexPath))
case 2:
self.performSegue(withIdentifier: SegueIdentifier.TwoButton.rawValue, sender: self.tableview.cellForRow(at: indexPath))
default:
break
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (sender as? PlaceTableViewCell) != nil {
if let indexPath = self.tableview.indexPathForSelectedRow {
let place = self.my_sections[indexPath.section].rows[indexPath.row]
navigationController?.view.backgroundColor = UIColor.clear
switch(segue.identifier!) {
case SegueIdentifier.NoButton.rawValue:
assert(segue.destination.isKind(of: PlaceDetailsViewController.self))
let vc = segue.destination as! PlaceDetailsViewController
vc.place = place
case SegueIdentifier.OneButton.rawValue:
assert(segue.destination.isKind(of: OneButtonViewController.self))
let vc = segue.destination as! OneButtonViewController
vc.place = place
case SegueIdentifier.TwoButton.rawValue:
assert(segue.destination.isKind(of: TwoButtonViewController.self))
let vc = segue.destination as! TwoButtonViewController
vc.place = place
default: break
}
}
}
}
地點對象具有place.buttons :[按鈕]
這三個detailViewControllers幾乎完全相同,只是它們具有不同數量的按鈕。
的的tableView決定哪些Segue公司使用基於place.buttons
的大小有時的tableView就像它通過隨機細胞正常的等次。不確定原因。
在'準備(for:)'爲什麼你使用選定的單元格再次獲得位置?它已經在'self.selectedPlace'中,或者你可以簡單地將這個地方作爲'performSegue'的'sender'參數提供給'performSegue'。 – Paulw11
確定在遵循這裏給出的建議後,我認爲這是一個排序錯誤。不知何故my_sections。行與表中列出的順序不匹配! –