我有5个选项卡栏项,如果没有用户登录,则单击任何选项卡时,将打开一个仅显示一些消息和一个登录按钮的视图控制器,如果进行记录,则所有已连接的视图控制器将从选项卡项中打开
答案 0 :(得分:0)
这不是一个好的UX /流程。但是,如果您想继续使用相同的解决方案,请尝试使用该解决方案。
// create a protocol
protocol loginIntimation {
func loginSuccess()
func loginFailure()
}
在您的登录ViewController中
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
现在在标签栏的根视图控制器中,创建一个子视图,该子视图具有您的登录或注册按钮,并根据loginIntimation处理您的UI
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。