成功登录或注册时隐藏按钮

问题描述 投票:0回答:2

我有两个屏幕A和B.

在屏幕A中,我有一个用于登录/注册的UIBarButtonItem

按下该按钮将打开新的弹出窗口,其中包含登录和注册视图。

现在我需要在成功注册时隐藏屏幕A上的按钮登录/注册按钮,或者在屏幕B中登录,该屏幕显示为弹出窗口。

现在我已成功登录/注册时取消了屏幕B,并且在下次启动应用程序时隐藏按钮。

我在屏幕A上使用它来隐藏按钮。

if(currentUser != nil) {
    loginRegisterButton.isHidden = true
}else {
    loginRegisterButton.isHidden = false
}

这仅适用于下次应用启动。我想要的是成功解雇屏幕B.

swift swift4.2
2个回答
0
投票

您可以将具有UIBarButton项的视图控制器从第一个视图控制器传递到处理登录的视图,并在成功登录时从视图中隐藏初始视图控制器中存在的按钮。防爆。

class FirstVC: UIViewController {
    var barButtonItem: UIBarButtonItem?

//    ...

func presentPopUp() {
    let popUp = PopUpView()
    //Configure PopUpView class that handles the login
    popUp.parentViewController = self
}
}

class PopUpView: UIView {
    var parentViewController: FirstVC?

func login() {
    // If successfull
    parentViewController?.navigationItem.leftBarButtonItem = nil
}
}

0
投票

将代表回调从ViewControllerB传递给ViewControllerA

代表议定书:

protocol ViewControllerBDelegate {
   func loginSuccess(user: YOUR_CURRENT_USER_OBJECT_TYPE)
}

在ViewControllerB中:

var delegate: ViewControllerBDelegate?

成功注册后

self.delegate?.loginSuccess(user: YOUR_CURRENT_USER_OBJECT_VALUE)

在View Controller中:

extension ViewControllerA: ViewControllerBDelegate {
   func loginSuccess(user: YOUR_CURRENT_USER_OBJECT_TYPE) {
     currentUser = user
   }
}

在打开viewcontrollerB时:

let controller = ViewControllerB(nibName: "ViewControllerB", bundle: nil)
controller.delegate = self 
self.navigationController?.pushViewController(controller, animated: false)
© www.soinside.com 2019 - 2024. All rights reserved.