Swift tentou apresentar modally um controlador activo [Controlador de vista actual] mesmo que o controlador apresentado seja outro
Li algumas respostas como ignorar o actual Controlador de visualização, mas a minha situação é diferente porque estou a apresentar outro controlador de visualização.
este código apresenta o controlador de visualização com o seu controlador de navegação, embora eu não possa aceder às suas propriedades:
@IBAction func didTouchAddFriend(_ sender: UIButton) {
DispatchQueue.main.async {
let storyBoard = UIStoryboard(name: "CustomContact", bundle: nil)
let customContactVC = storyBoard.instantiateViewController(withIdentifier: "CustomContact")
}
}
Enquanto este não funciona
@IBAction func didTouchAddFriend(_ sender: UIButton) {
DispatchQueue.main.async {
let navigation = UIStoryboard.init(name: "CustomContact", bundle: nil).instantiateInitialViewController() as! UINavigationController
let pickerUserVC = navigation.viewControllers.first as! CustomContactsViewController
self.present(pickerUserVC, animated: true, completion: nil)
}
}
Tenho outro quadro de história chamado CustomContact.storyboard que contém um Controladomcontactsviewcontroller
Quando eu clicar no didTouchAddFriend, apenas me mostra este erro:
'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <Main.MainViewController: 0x7ff29f06ac00>.'
não consigo compreender o erro porque quando imprimi o valor do pickerUserVC, ele mostra o controlador da vista certa:
<Main.CustomContactsViewController: 0x7fd1b7922400>
MainViewController é o controlador de visualização actual que executa a função didTouchAddFriend
0
Author: Rendell Lasola, 2018-01-19
1 answers
Você deve apresentar o Controlador de navegação (que hospeda o CustomContactsViewController
Como é o controlador de vista de raiz).
Além disso, você pode ignorar a chamada de despacho, já que estamos em uma @ IBAction que já corre no fio principal:
@IBAction func didTouchAddFriend(_ sender: UIButton) {
let navigation = UIStoryboard.init(name: "CustomContact", bundle: nil).instantiateInitialViewController() as! UINavigationController
let pickerUserVC = navigation.viewControllers.first as! CustomContactsViewController
self.present(navigation, animated: true, completion: nil)
}
3
Author: Andreas Oetjen, 2018-01-19 08:31:05