View Controller 显示黑屏而不是从 Firebase 数据库 Swift iOS 中获取用户
Posted
技术标签:
【中文标题】View Controller 显示黑屏而不是从 Firebase 数据库 Swift iOS 中获取用户【英文标题】:View Controller shows black screen instead of fetching users from Firebase database Swift iOS 【发布时间】:2017-06-05 10:04:56 【问题描述】:当我转到 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")
通过 LoginButton 下的 SWRevealViewController 呈现 Home View Controller
let vc : SWRevealViewController = self.storyboard?.instantiateViewController(withIdentifier: "SWRevealViewController") as! SWRevealViewController
self.present(vc, animated: true, completion: nil)
架构
【问题讨论】:
能否请您展示一下您如何呈现Home View Controller
的代码? PS:顺便说一句,您在这里有两个问题:1.为什么显示黑屏2.如何获取数据
@TungFam 我已经更新了问题
【参考方案1】:
问题
您可能没有设置导航控制器的 RootViewController。
解决方案
选择SWRevealViewController
和NavigationController
之间的转场。在属性检查器中,将 segue 标识符设置为 “sw_front”。这是表示前视图控制器转换的默认标识符。
对于SWRevealViewController
和侧边栏视图控制器之间的segue,将segue 标识符设置为“sw_rear”。这个标识符告诉SWRevealViewController
控制器代表后视图
【讨论】:
按照您的建议设置,但我不知道为什么它显示为黑色 您是否将SWRevealViewController
添加为Identifire?【参考方案2】:
通过将其添加到ViewDidLoad
一切正常............
menuHome.target = SWRevealViewController()
menuHome.action = #selector(SWRevealViewController.revealToggle(_:))
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
tableView.delegate = self
tableView.dataSource = self
【讨论】:
以上是关于View Controller 显示黑屏而不是从 Firebase 数据库 Swift iOS 中获取用户的主要内容,如果未能解决你的问题,请参考以下文章
Flutter for iOS 12.1:黑屏而不是应用程序
IOS:将viewcontroller添加到ios中的自定义TabBar