У меня есть ViewController
: если пользователь не вошел в систему, я открываю новый контроллер, чтобы пользователь мог войти в систему. Открытие сделано таким образом:Вызов метода представления viewcontroller из модального
if(!loggedIn){
self.performSegue(withIdentifier:"loginView", sender:self)
}
После входа в систему, я хочу, чтобы закрыть эту модальность и вернуться к моей ViewController: это очень легко сделать, но я хочу еще одна вещь. Я хочу, чтобы оператор представления представления вызывал этот метод до того, как я отклонил свой модальный код:
func goToContent(animated:Bool){
let viewController:ContentViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Content") as! ContentViewController
self.navigationController!.pushViewController(viewController, animated: animated)
}
Возможно ли это? Из моего модального кода я не мог получить ссылку на презентацию viewController. То есть: я попытался следующие, но я не знаю, если это правильный путь, чтобы продолжить:
let vc:ViewController = ViewController()
vc.goToContent(animated:false)
Это работает, но не там лучшие решения?
[Редактировать, чтобы ответить на вопрос в комментариях] я реализовал делегатом так:
в ViewController:
class ViewController: UIViewController, LoginViewControllerDelegate {
var loginViewController:LoginViewController = LoginViewController()
override func viewDidLoad() {
super.viewDidLoad()
loginViewController.delegate = self
}
В LoginViewController файле, как раз перед объявлением класса:
protocol LoginViewControllerDelegate: class {
func goToContent(animated:Bool)
}
Внутри LoginViewController:
weak var delegate: LoginViewControllerDelegate?
по его мнению, сделал нагрузки (только для тестирования: Я просто поставить печать внутри тела goToContent):
delegate?.goToContent()
Вы попробовали это ... если да, в чем проблема? – KKRocks
Нет никаких проблем: я хочу знать, нужно ли правильно настроить презентационный контроллер представления из моего модального кода. Я не мог получить ссылку на мой диспетчер представления, потому что он был открыт через segue (performSegue) –
, пожалуйста, добавьте свой код для настоящего? – KKRocks