проблема с кастом между ViewController' ом
Суть такая пытаюсь добавить возможность редактирования с одного ViewController на другой. Но при попытке это сделать компилятор вот так вот ругается "Could not cast value of type 'EmojiReader.NewEmojiTableViewController' (0x10993f688) to 'UINavigationController' (0x7fff86f31638)". Не пойму чем ему не понравилась строка let navigationVC = segue.destination as! UINavigationController
Иерархия выглядит так:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
guard segue.identifier == "editEmojiScreen" else { return }
let indexPath = tableView.indexPathForSelectedRow!
let emoji = objects[indexPath.row]
let navigationVC = segue.destination as! UINavigationController
let newEmojiVC = navigationVC.topViewController as! NewEmojiTableViewController
newEmojiVC.emoji = emoji
newEmojiVC.title = "Edit"
}
Ответы (2 шт):
у вас видимо класс UINavigationController не унаследован от UINavigationController к которому вы хотите привести
Решение было просто, оказывается скасить он не могу, так как данный segue уже был виден в NewEmojiTableViewController без дополнительного перехода на UINavigationController (почему в данном swift 5.3 эта работает так не понятно, как было раньше не работает, хотя выглядит довольно логично) теперь код выглядит так
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
guard segue.identifier == "editEmoji" else { return }
let indexPath = tableView.indexPathForSelectedRow!
let emoji = objects[indexPath.row]
let navigationVC = segue.destination as! NewEmojiTableViewController
navigationVC.emoji = emoji
navigationVC.title = "Edit"
}
Правда экран работает не много не так как хотелось (должен по типу present modally, а он открывается на новом экране)
