【发布时间】:2018-04-07 15:20:58
【问题描述】:
Iphone screenshot https://i.stack.imgur.com/zQ06M.png
我试图让我的 textLabel 和我的 detailTextLabel 显示两个不同的东西,但由于某种原因它们都说同样的东西。这里应该只有一个单元格,顶部标签显示数字 2,底部标签显示 ;slakdfj(现在随机输入)。请参阅上面的链接以获取屏幕截图。
这里是主要的vc:
import UIKit
import Firebase
import FirebaseAuth
import FirebaseDatabase
import FirebaseStorage
class ListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableViewProducts: UITableView!
var delegate: ListViewController?
var ref:DatabaseReference?
var databaseHandle: DatabaseHandle?
var postData = [productsList]()
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference().child("0")
loadProducts()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return postData.count
}
func loadProducts() {
ref?.observe(DataEventType.value, with: { (snapshot) in
var newSweets = [productsList]()
for post in snapshot.children {
let postObject = productsList(snapshot: post as! DataSnapshot)
newSweets.append(postObject)
print(self.postData)
}
self.postData = newSweets
self.tableViewProducts.reloadData()
}) { (error:Error) in
print(error)
}
}
//This places the text on the ViewControllerTableViewCell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let sweet = postData[indexPath.row]
cell.textLabel?.text = sweet.id
cell.detailTextLabel?.text = sweet.p_name
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "showDetails", sender: self)
}
}
结构如下:
导入基础 导入 UIKit 导入 Firebase 数据库
struct productsList {
let id: String!
let p_name: String!
init(id: String, p_name: String) {
self.id = id
self.p_name = p_name
}
init (snapshot:DataSnapshot) {
id = snapshot.value as! String
p_name = snapshot.value as! String
}
}
数据结构(目前很基础):
[ {
"id" : "2",
"p_name" : ";slakdfj"
} ]
【问题讨论】:
标签: json swift firebase uilabel