标签栏控制器链接到不同的视图控制器,具体取决于用户登录/注销-iOS Swift

时间:2019-02-04 07:16:04

标签: ios cocoa-touch uitabbarcontroller

我有5个选项卡栏项,如果没有用户登录,则单击任何选项卡时,将打开一个仅显示一些消息和一个登录按钮的视图控制器,如果进行记录,则所有已连接的视图控制器将从选项卡项中打开

1 个答案:

答案 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。