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

【讨论】:

关于这个答案的一个注释:上面的行应该被调用beforeFUIAuth.defaultAuthUI()?.authViewController()实例化一个auth视图控制器。【参考方案3】:

为此,您可以在viewDidLoadviewWillAppear 中将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 应用)

如何在 App Store 中临时隐藏 IOS App

Apple 在 iOS (Swift) 上使用 FirebaseUI 登录不起作用

将 FirebaseUI-IOS 与自定义 UICollectionViewCell 一起使用时出错