У меня есть splitView. Левая сторона (MasterViewController) - это таблица, заполненная объектами, скажем, A, B, C, D, каждая в своей ячейке. Поэтому, когда выбраны A или B, я хочу, чтобы правая часть splitview вызывала DetailViewController. Но C и D я хочу, чтобы правая сторона выводила свои собственные отдельные контроллеры представления вместо DetailViewController. Здесь я сталкиваюсь с проблемами.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let indexPath = tableView.indexPathForSelectedRow {
let object = dailyAgenda[indexPath.row]
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController
controller.detailItem = object
if object == "A" {
controller.textDescription = "This is A"
}
else {
controller.textDescription = indepthDescript[indexPath.row]
}
}}
if segue.identifier == "CSegue" {
let controller = (segue.destination as! UINavigationController).topViewController as! CViewController
}
if segue.identifier == "DSegue" {
let controller = (segue.destination as! UINavigationController).topViewController as! DViewController
}}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let indexPath = tableView.indexPathForSelectedRow {
let object = dailyAgenda[indexPath.row]
if object == "C" {
self.performSegue(withIdentifier: "CSegue", sender: self)
}
if object == "D" {
self.performSegue(withIdentifier: "DSegue", sender: self)
}
else {
self.performSegue(withIdentifier: "showDetail", sender: self)
}}}
Каждый раз, когда я запускаю его, A и B работают, но когда я пробую C или D, я получаю ошибку здесь
Под segue.identifier == "showDetail". Я не могу понять, почему C и D вызывают идентификатор showDetail. Любая помощь или объяснение будет принята с благодарностью. Это раскадровка.