Это не хороший UX / поток.Но в любом случае попробуйте использовать это решение, если вы хотите продолжить с тем же.
// create a protocol
protocol loginIntimation {
func loginSuccess()
func loginFailure()
}
в вашем контроллере представления входа в систему
var delegate:loginIntimation?
Обрабатывать результаты API входа в систему и в случае успеха
self.delegate?.loginSuccess()
//your code to dismiss or pop your login viewcontroller
также обрабатывает в случае сбоя или закрытия VC без входа в систему
self.delegate?.loginFailure()
//your code to dismiss or pop your login viewcontroller
А теперь в корневом view-контроллере панели вкладок создайте подпредставление, в котором есть кнопки входа в систему или регистрации, и обрабатывайте свой пользовательский интерфейс согласноloginIntimate
class TabBarViewController1: UIViewController, loginIntimation
{
@IBOutlet weak var viewNavigateToLogin: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
// Check user login
// if logined hide the view or else show the view
self.viewNavigateToLogin.isHidden = false (if not logined)
}
func loginSuccess() {
// Handle if login success
// Hide the view
self.viewNavigateToLogin.isHidden = true
}
func loginFailure() {
// Handle if login failure
// Show the view
self.viewNavigateToLogin.isHidden = false
}
}
и обрабатывает ваши действия кнопки входа или регистрации в представлении viewNavigateToLogin для навигации или представления логина ViewController.