Ios 视图控制器显示黑屏,而不是从Firebase数据库获取用户
当我转到HomeViewController时,屏幕将完全变黑。实际上,我想让用户把它们放到TableViewCells中。我使用Firebase作为数据库,使用Swift作为语言。帮我完成这个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:
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
作为标识?