Я создал проект Master-Detail полностью программно, то есть никакой раскадровки (я удалил файлы).
Чего я не могу понять, так это того, как перейти между основным представлением (MV) и подробным представлением (DV)
я пробовал
self.showViewController(detailViewController, sender: self)
а также
self.showDetailViewController(detailViewController, sender: self)
из MV, но на самом деле это не работает.
Таблица моего MV заполнена ячейками, которые при нажатии должны приближаться к аннотации в mapView в моем DV.
По какой-то причине карта на DV и таблица в MV не обновляются после первой загрузки при открытии приложения.
Я использую пользовательский объект для передачи данных между представлениями
MV:
detailViewController.setRequired(self.customObject)
self.showDetailViewController(detailViewController, sender: self)
self.tableView.reloadData()
Где «setRequired» — это функция, которая устанавливает переменные класса DV в обновленные значения из MV (эта часть, по крайней мере, работает)
DV:
super.viewDidLoad()
mapView = MKMapView()
mapView.mapType = .Standard
mapView.frame = view.frame
mapView.delegate = self
view.addSubview(mapView)
self.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
self.navigationItem.leftItemsSupplementBackButton = true
populateMap(extractedObject)
где «populateMap» — это функция, которая принимает объект (значения правильные, не беспокойтесь) и предназначена для заполнения карты новой информацией.
Как я уже сказал, mapView не обновляется, и таблица тоже.
Есть идеи?
(напоминаем, что файла раскадровки нет, конечно, намеренно)
Заранее спасибо!
Йона
ИЗМЕНИТЬ
После ответа вакавамы:
Да, мой masterViewController встроен в UINavigationController. в viewDidLoad MVC у меня есть
let controllers = self.splitViewController!.viewControllers
self.detailViewController = controllers[controllers.count-1].topViewController as DetailViewController},
но когда я пытаюсь предложить self.navigationController.pushView..., я получаю следующую ошибку:
fatal error: unexpectedly found nil while unwrapping an Optional value
на линии let controllers = ...
EDIT в Edit
Даже после решения проблемы с найденным нулем карта и таблица просто не загружаются. Есть идеи?
didSet
для свойства в detailVC. - person vacawama   schedule 23.06.2015self.dismissViewController
, чтобы закрыть всплывающее окно. Я предполагаю, что перед тем, как вы это сделаете, вы отправляете данные обратно вызывающему абоненту. - person vacawama   schedule 23.06.2015