如何设置具有Firebase值的条形按钮? [英] How to setup a Bar Button with a value of firebase?

查看:29
本文介绍了如何设置具有Firebase值的条形按钮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想检查用户是否是管理员.如果用户是管理员,我想显示一个条形按钮.如果不是,则应隐藏条形按钮.

I want to check if the user is a admin or not. If the user is a admin, I want to show a bar button. If not, the bar button should be hidden.

我在 viewDidLoad 中调用以下代码:

@IBOutlet weak var beitraegeMelden: UIBarButtonItem!
var admin = false

func setupBarButton() {
    observeAdmin()
    if admin == true {
        self.beitraegeMelden.isEnabled = true
        self.navigationItem.rightBarButtonItem = self.beitraegeMelden
    } else {
        self.beitraegeMelden.isEnabled = false
        self.navigationItem.rightBarButtonItem = nil
    }
}

func observeAdmin() {
    guard let currentUserUid = UserApi.shared.CURRENT_USER_ID else { return }
    let REF_ADMIN = Database.database().reference().child("users").child(currentUserUid).child("admin")
    REF_ADMIN.observeSingleEvent(of: .value) { (admin) in
        let adminRecht = admin.value as? Bool
        if adminRecht == true {
            self.admin = true
        } else {
            self.admin = false
        }
    }
}

这是我实际登录用户的数据库结构:

Here my database structure of the actually logged in user:

users
    currentUid
        admin: true 

admin值永远不会为真.预先感谢您的帮助!

The admin value never gets true. Thanks in advance for your help!

推荐答案

您需要完成,因为对firebase的调用是异步的

You need a completion as the call to firebase is asynchronous

func observeAdmin(completion:@escaping((Bool) -> () )) {
    guard let currentUserUid = UserApi.shared.CURRENT_USER_ID else { return }
    let REF_ADMIN = Database.database().reference().child("users").child(currentUserUid).child("admin")
    REF_ADMIN.observeSingleEvent(of: .value) { (admin) in
       completion( (admin.value as? Bool) ?? false )
    }
}


致电

observeAdmin { (res) in 
   self.beitraegeMelden.isEnabled = res    
   self.navigationItem.rightBarButtonItem = res ? self.beitraegeMelden : nil
}

这篇关于如何设置具有Firebase值的条形按钮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆