FirebaseUI iOS 移除取消按钮
Posted
技术标签:
【中文标题】FirebaseUI iOS 移除取消按钮【英文标题】:FirebaseUI iOS remove cancel button 【发布时间】:2017-09-10 16:31:45 【问题描述】:我是 ios 开发的新手。我想用 Firebase 建立授权。我正在使用 FirebaseUI-iOS。我想从初始屏幕隐藏取消按钮。你有什么想法吗?
我以编程方式创建 Firebase authViewController:
import UIKit
import Firebase
import FirebaseAuthUI
import FirebaseGoogleAuthUI
class AuthViewController: UIViewController
fileprivate var _authHandle: FIRAuthStateDidChangeListenerHandle!
var user: FIRUser?
override func viewDidLoad()
super.viewDidLoad()
configureAuth()
func configureAuth()
let provider: [FUIAuthProvider] = [FUIGoogleAuth()]
FUIAuth.defaultAuthUI()?.providers = provider
FUIAuth.defaultAuthUI()?.isSignInWithEmailHidden = true
// listen for changes in the authorization state
_authHandle = FIRAuth.auth()?.addStateDidChangeListener (auth: FIRAuth, user: FIRUser?) in
// check if there is a current user
if let activeUser = user
// check if the current app user is the current FIRUser
if self.user != activeUser
self.user = activeUser
let name = user!.email!.components(separatedBy: "@")[0]
print(name)
else
// user must sign in
self.loginSession()
func loginSession()
let authViewController = FUIAuth.defaultAuthUI()!.authViewController()
present(authViewController, animated: true, completion: nil)
deinit
FIRAuth.auth()?.removeStateDidChangeListener(_authHandle)
【问题讨论】:
除了下面给出的答案之外,我认为您可以在情节提要中做到这一点。只需搜索 navigationItemLeft 之类的。 删除指定左栏按钮项的代码部分或将其设置为零。 @TylerRutt 我以编程方式使用此取消按钮创建视图控制器。我使用 FirebaseUI-iOS。在这种情况下,我不确定是否必须删除按钮。我用代码更新了我的问题。有什么想法吗? 你试过self.navigationItem.setHidesBackButton(true, animated: false)
@TylerRutt 是的,我试过了。它没有帮助。我很确定我必须在 loginSession 中调用一些方法或更改 authViewController 实例的属性。但到目前为止,我还没有找到要更改的内容。
【参考方案1】:
扩展VC并将其添加到viewWillAppear中
extension FUIAuthBaseViewController
open override func viewWillAppear(_ animated: Bool)
self.navigationItem.leftBarButtonItem = nil
【讨论】:
参见 Karen Hovhannisyan 对规范方法的回答。【参考方案2】:你应该设置
FUIAuth.defaultAuthUI()?.shouldHideCancelButton = true
【讨论】:
关于这个答案的一个注释:上面的行应该被调用before用FUIAuth.defaultAuthUI()?.authViewController()
实例化一个auth视图控制器。【参考方案3】:
为此,您可以在viewDidLoad
或viewWillAppear
中将leftBarButtonItem
设置为nil
。
self.navigationItem.leftBarButtonItem = nil
【讨论】:
问题是我以编程方式创建 FirebaseUI authViewController。我不知道如何访问它的 viewDidLoad 或 viewWillAppear 方法。我用当前代码更新了我的问题。 @VitaliiIvanov 你试过在AuthViewController
的viewDidLoad中设置吗?
是的,我试过了。它没有帮助。我只知道如何隐藏整个导航栏。在 loginSession 函数中,我可以添加 authViewController.navigationBar.isHidden = true。但我只需要隐藏取消按钮。
@VitaliiIvanov 然后尝试一次authViewController.navigationItem.leftBarButtonItem = nil
@VitaliiIvanov 如果authViewController.navigationBar.isHidden = true
对你有效,那么authViewController.navigationItem.leftBarButtonItem = nil
也应该有效,请尝试将此行放在当前的完成块中【参考方案4】:
在 Objective C 中,只需扩展 FUIAuthPickerView 控制器。
在这个扩展选择器视图的 ViewDidLoad 中,添加这两行:
self.navigationController.navigationItem.hidesBackButton = NO;
[[self navigationItem] setLeftBarButtonItem:nil];
请注意,在您实例化 Auth UI 的文件中,您将需要此方法:
- (FUIAuthPickerViewController *)authPickerViewControllerForAuthUI:(FUIAuth *)authUI
return [[FUICustomAuthPickerViewController alloc] initWithAuthUI:authUI];
【讨论】:
以上是关于FirebaseUI iOS 移除取消按钮的主要内容,如果未能解决你的问题,请参考以下文章
Facebook按钮我正在使用firebaseUI多重登录,除了Facebook Builder().build()外,所有按钮都在生成,如何使该按钮膨胀?
FirebaseUI Firestore 未在 iOS 上检索数据
将 FirebaseUI 与 Twitter 登录一起使用(iOS 应用)