У меня есть класс Data Manager, который обрабатывает некоторые действия JSON. Когда одно действие завершено, я хочу нажать на контроллер навигации.Нажатие навигационного контроллера из другого класса в Swift
FirstViewController вызывает функцию от класса DataManager
DataManager Класс
class func extract_json(data:NSData) -> Bool {
//Success
FirstViewController().pushToValueView()
}
FirstViewController Класс
func pushToValueView() {
println("Push to Value View")
navigationController?.pushViewController(ValueViewController(), animated: true)
}
В этом примере вызывается println()
, но не происходит никакого нажатия. Если я позвоню pushToValueView()
в FirstViewController, например. self.pushToValueView()
(Для целей отладки) происходит нажатие.
Вы создаете экземпляр FirstViewController, а не ссылаетесь на экземпляр, который уже используется и в иерархии навигации. В любом случае это плохой дизайн. Вы должны предоставить закрытие завершения для 'extract_json', который может выполнять push в контексте класса контроллера представления – Paulw11
. Я понимаю, что вы имеете в виду, но как я могу назвать FirstViewController, тот, который называется DataManager в первую очередь? – Colin
Когда экземпляр FirstViewController вызывает метод DataManager, он передает завершение закрытия этому методу. Когда метод DataManager впоследствии выполняет закрытие, он запускается в экземпляре Yhe FirstViewController – Paulw11