这是我在Firebase here中创建的表格。我有一个搜索按钮。按钮操作首先将从firebase获取数据,然后将其发送到另一个视图控制器并将其显示在表视图中。但主要问题是在从Firebase获取所有数据之前
self.performSegueWithIdentifier("SearchResultPage", sender: self )
触发器,我的下一个视图控制器显示一个空表视图。这是我的努力here。
从这篇文章here我认为我的代码放置不好。
答案 0 :(得分:1)
在完成for循环
之后的if block中的dataTransfer方法中写下这行代码self.performSegueWithIdentifier("SearchResultPage", sender: self )
答案 1 :(得分:0)
尝试在执行segue时将搜索字符串作为发件人发送,例如:
self.performSegueWithIdentifier("SearchResultPage", sender: "searchString")
然后,在准备segue时,获取目标视图控制器并将字符串发送到新的视图控制器。类似的东西:
destinationViewController.searchString = sender as! String
当segue完成并且你来到新的视图控制器时,你现在应该有一个设置的searchString值,使用该值来执行查询并获取要在新表视图中显示的相关数据。
请注意,这只是众多解决方案之一,还有其他方法可以实现这一目标。
答案 2 :(得分:0)
在获取数据
后,请尝试以下操作,以便进入下一个视图控制器func dataTransfer() {
let BASE_URL_HotelLocation = "https://**************.firebaseio.com/Niloy"
let ref = FIRDatabase.database().referenceFromURL(BASE_URL_HotelLocation)
ref.queryOrderedByChild("location").queryStartingAtValue("uttara").observeEventType(.Value, withBlock: { snapshot in
if let result = snapshot.children.allObjects as? [FIRDataSnapshot] {
for child in result {
let downloadURL = child.value!["image"] as! String;
self.storage.referenceForURL(downloadURL).dataWithMaxSize(25 * 1024 * 1024, completion: { (data, error) -> Void in
let downloadImage = UIImage(data: data!)
let h = Hotel()
h.name = child.value!["name"] as! String
print("Object \(count) : ",h.name)
h.deal = child.value!["deal"] as! String
h.description = child.value!["description"] as! String
h.distance = child.value!["distance"] as! String
h.latestBooking = child.value!["latestBooking"] as! String
h.location = child.value!["location"] as! String
h.image = downloadImage!
self.HotelObjectArray.append(h)
})
}
let storyboard = UIStoryboard(name:"yourStoryboardName", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("SearchResultPageIdentifier") as! SearchResultPage
self.navigationController.pushViewController(vc, animated: true)
}
else {
print("no results")
}
})
}