У меня есть программно созданный rightBarButtonItem
, который я хочу вызвать modal segue для контроллера навигации. Контроллер Nav является «контроллером корневого представления» на моей панели редактирования View View.Передача объекта через контроллер корневого представления
Здесь example of what I'm talking about, за исключением того, что кнопка создана в раскадровке и, таким образом, вы можете управлять переходом от кнопки в раскадровке. Это структура, я говорю о
HomeVC --(modal)--> Navigation Controller --(root view)--> EditVC
Я не могу вставить в моей раскадровке в rightBarButtonItem
, так что я должен создать программно и made the segue to the Navigation Controller following this answer.
Моей целью здесь является предоставление модального экрана для редактирования объекта, поэтому мне нужно передать этот объект из моего HomeVC в мой EditVC через контроллер навигации. Пример в первой ссылке состоял в том, чтобы создать объект, поэтому ничего не нужно было передать.
Вот, где я сейчас. Моя HomeVC (упрощая имена, чтобы его легче понять) имеет Navbar с программно созданный rightBarButtonItem
которого селектор вызывает функцию:
func editButtonPressed() {
// doesn't call prepareForSegue unless I prepend super.
super.performSegueWithIdentifier("ShowEdit", sender: self)
}
Моя беда лежит внутри моей функции prepareForSegue:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
print("this one prints")
if segue.identifier == "ShowEdit" {
print("this one prints")
// prints out the UINavigationController, not the EditVC
print("segue: \(segue.destinationViewController)")
if let editViewController = segue.destinationViewController as? EditViewController {
// THIS IS WHAT I WANT TO ACCOMPLISH
editViewController.selectedObject = selectedObject
print("DOES NOT PRINT")
} else {
print("this one prints")
}
}
Так что, если вам может видеть, что я получаю, я хочу передать объект из HomeVC в EditVC, но мой segue в настоящее время переходит к контроллеру корневого представления навигации. Как передать его через контроллер навигации в EditVC?
Я думал о создании контроллера для контроллера Nav, так что было бы myNavVC.selectedObject == selectedObject
, а затем в prepareForSegue myNavVC кодовый его с EditVC.selectedObject == selectedObject
, но то, что я использовал бы для идентификатора, так как его вид корня?
вы уверены, что destVC является editVC? – pacification
Итак, сейчас destVC является навигационным контроллером, который является корневым представлением для редактированияVC, поэтому его не происходит внутри 'if allow editViewController ...'. См. Мой последний абзац, что я хочу делать, но не могу понять, как это сделать. –