Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自定义FUIAuthPickerViewController_Ios_Firebase_Firebase Authentication_Firebaseui - Fatal编程技术网

Ios 自定义FUIAuthPickerViewController

Ios 自定义FUIAuthPickerViewController,ios,firebase,firebase-authentication,firebaseui,Ios,Firebase,Firebase Authentication,Firebaseui,如何使用自定义按钮、自定义操作、背景、加载程序等自定义Firebase UI验证选择器控制器 我已经尝试对FUIAuthPickerViewController进行子类化,但我们无法访问登录按钮这就是您创建自己的FUIAuthPickerViewController类的方法: 使用以下内容创建FUICustomLoginController.swift: import UIKit import FirebaseUI import FirebaseAuth class FUICustomLogi

如何使用自定义按钮、自定义操作、背景、加载程序等自定义Firebase UI验证选择器控制器


我已经尝试对
FUIAuthPickerViewController
进行子类化,但我们无法访问登录按钮

这就是您创建自己的
FUIAuthPickerViewController
类的方法:

使用以下内容创建FUICustomLoginController.swift:

import UIKit
import FirebaseUI
import FirebaseAuth

class FUICustomLoginController: ViewController {

    var authUI: FUIAuth! = FUIAuth.defaultAuthUI()
    var auth: Auth = Auth.auth()

    private func didSignIn(auth: AuthCredential?, error: Error?, callBack: AuthResultCallback?) {
        let callBack: (AuthDataResult?, Error?) -> Void = { [unowned self] result, error in
            callBack?(result?.user, error)
            self.authUI.delegate?.authUI?(self.authUI, didSignInWith: result, error: error)
        }
        if let auth = auth {
            self.auth.signInAndRetrieveData(with: auth, completion: callBack)
        } else if let error = error {
            callBack(nil, error)
        }
    }

    func signIn<T: FUIAuthProvider>(type: T.Type, defaultValue: String? = nil) {
        try? self.authUI.signOut() // logout from google etc..
        self.authUI.providers.first(where: { $0 is T })?.signIn(withDefaultValue: defaultValue, presenting: self, completion: self.didSignIn)
    }
}

您可以自定义默认按钮、添加图像等。。(正在工作的黑客)

}

class LoginPickerController: FUICustomLoginController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Customize authUI if needed
        //self.authUI.providers = ... 
        self.authUI.delegate = self
    }

    @IBAction func loginFacebook(_ sender: Any) {
        self.signIn(type: FUIFacebookAuth.self)
    }

    @IBAction func loginGoogle(_ sender: Any) {
        self.signIn(type: FUIGoogleAuth.self)
    }

    @IBAction func loginPhone(_ sender: Any) {
        self.signIn(type: FUIPhoneAuth.self)
    }
}

extension LoginPickerController: FUIAuthDelegate {

    func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?) {
        // perform login actions
    }
}
    class SignInViewController: FUIAuthPickerViewController {
    weak var delegate: signInProtocol?

    // Unhashed nonce.
    fileprivate var currentNonce: String?
    var backgView: UIView?
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .clear
        for each in view.subviews[0].subviews[0].subviews[0].subviews {
            if let button = each as? UIButton {
                button.layer.cornerRadius = 20.0
                button.layer.masksToBounds = true
                ///do any other button customization here
            }
        }
        ///add background image
        let scrollView = view.subviews[0]
        scrollView.backgroundColor = .clear
        let contentView = scrollView.subviews[0]
        contentView.backgroundColor = .clear
        let background = UIImage(named: "imagename")
        let backgroundImageView = UIImageView(image: background)
        backgroundImageView.contentMode = .scaleToFill
        view.insertSubview(backgroundImageView, at: 0)

    }