Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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 视图控制器显示黑屏,而不是从Firebase数据库获取用户_Ios_Swift_Uitableview_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios 视图控制器显示黑屏,而不是从Firebase数据库获取用户

Ios 视图控制器显示黑屏,而不是从Firebase数据库获取用户,ios,swift,uitableview,firebase,firebase-realtime-database,Ios,Swift,Uitableview,Firebase,Firebase Realtime Database,当我转到HomeViewController时,屏幕将完全变黑。实际上,我想让用户把它们放到TableViewCells中。我使用Firebase作为数据库,使用Swift作为语言。帮我完成这个 import UIKit import Firebase class HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var tableView:

当我转到HomeViewController时,屏幕将完全变黑。实际上,我想让用户把它们放到TableViewCells中。我使用Firebase作为数据库,使用Swift作为语言。帮我完成这个

import UIKit
import Firebase

class HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!

    var users = [User]()

    override func viewDidLoad() {
        super.viewDidLoad()
        fetchUser()
    }

    func fetchUser() {       
        FIRDatabase.database().reference().child("users").observe(.childAdded, with: { (snapshot) in

            if let dictionary = snapshot.value as? [String: AnyObject] {
                let user = User(dictionary: dictionary)
                self.users.append(user)

                //this will crash because of background thread, so lets use dispatch_async to fix
                DispatchQueue.main.async(execute: {
                    self.tableView.reloadData()
                })
            }
        }, withCancel: nil)
    }

    func handleCancel() {
        dismiss(animated: true, completion: nil)
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return users.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "resultCell", for: indexPath)
        let user = users[indexPath.row]
        cell.textLabel?.text = user.name
        cell.detailTextLabel?.text = user.email
        return cell
    }
}

class UserCell: UITableViewCell {
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
通过登录按钮下的SWRevealViewController显示主视图控制器

let vc : SWRevealViewController = self.storyboard?.instantiateViewController(withIdentifier: "SWRevealViewController") as! SWRevealViewController
self.present(vc, animated: true, completion: nil)
架构
问题

您可能没有设置导航控制器的RootViewController

解决方案

let vc : SWRevealViewController = self.storyboard?.instantiateViewController(withIdentifier: "SWRevealViewController") as! SWRevealViewController
self.present(vc, animated: true, completion: nil)
选择
SWRevealViewController
NavigationController
之间的顺序。在属性检查器中,将segue标识符设置为“sw\u front”
。这是指示前视图控制器转换的默认标识符


对于
SWRevealViewController
和侧栏视图控制器之间的序列,将序列标识符设置为“sw\u-rear”。此标识符通过将其添加到
viewdiload
中,告诉
SWRevealViewController
控制器表示后视图

,一切正常

    menuHome.target = SWRevealViewController()
    menuHome.action = #selector(SWRevealViewController.revealToggle(_:))
    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

    tableView.delegate = self
    tableView.dataSource = self

请您向代码演示如何显示您的
主视图控制器
?顺便说一句,你有两个问题:1。为什么它会显示黑屏2。如何取回data@TungFam我已经更新了问题。它是按照您的建议设置的,但我不知道为什么它显示为黑色。您是否添加了
SWRevealViewController
作为标识?