swift - 如何使用 Firebase 实时数据库制作部分并将图像放入 tableview
问题描述
我正在制作一个以firebase为基础的应用程序。我需要将数据拆分为部分和单元格,并向单元格添加图片。但现在我只将数据放在单元格中,不能将图像添加到单元格中。并且不知道如何制作部分。这是我在火力基地的树
这是我的模型:
class Movie {
var movieName: String
var movieDuration: Int
var movieDescription: String
var movieGenre: String
var movieImage: String
init(movieName: String, movieDescription: String, movieDuration: Int, movieGenre: String, movieImage: String) {
self.movieName = movieName
self.movieDuration = movieDuration
self.movieDescription = movieDescription
self.movieGenre = movieGenre
self.movieImage = movieImage
}
}
和 TableViewController 代码:
var ref: DatabaseReference?
var movies = [Movie]()
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference().child("Monday")
ref?.observe(.childAdded){ [weak self](snapshot) in
let key = snapshot.key
guard let value = snapshot.value as? [String: Any] else {return}
if let movieDescription = value["description"] as? String, let movieDuration = value["duration"] as? Int, let movieGenre = value["genre"] as? String, let movieImage = value["image"] as? String {
let movie = Movie(movieName: key, movieDescription: movieDescription, movieDuration: movieDuration, movieGenre: movieGenre, movieImage: movieImage)
self?.movies.append(movie)
if let row = self?.movies.count {
let indexPath = IndexPath(row: row-1, section: 0)
self?.tableView.insertRows(at: [indexPath], with: .automatic)
}
}
}
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 0
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return movies.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let movie = movies[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "MovieCell", for: indexPath)
cell.textLabel?.text = movie.movieName
cell.textLabel?.textColor = .white
cell.detailTextLabel?.text = movie.movieGenre
cell.detailTextLabel?.textColor = .white
return cell
}
如果有人可以帮助我,那就太好了......)
解决方案
欢迎来到 StackOverflow。我相信您的问题与UITableView
逻辑密切相关。您无法创建tableView
部分,因为在委托方法中override func numberOfSections(in tableView: UITableView) -> Int
您返回 0。这意味着您有零个部分。如果您想要多个部分,则需要将方法更改为:
override func numberOfSections(in tableView: UITableView) -> Int{
return 2 // this gives you two sections
}
此外,您需要像这样指定每个部分的行数
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0{
return 5 //you have five rows in the first section
}else { //second section
return 7 // you have seven row in the second section
}
}
现在我们来到第二部分——如何拥有一个图像。问题是要拥有一个图像,您需要创建一个自定义单元格,一个UITableViewCell
包含 imageView 的子类。这并不难实现,但有多个步骤要做,虽然有很棒的在线教程:)。我建议您在线查找 UITableView 自定义单元格教程。
推荐阅读
- mysql - mysql有问题,不允许多个外键
- python - ValueError:没有足够的值来解包(预期 2,得到 1)使用列表
- spring-boot - 部署在 PCF 中的 Spring Boot - 响应时间慢。如何优化?
- spring - JPA Repository,指定具体方法的fetch模式
- messaging - Hazelcast - 忽略本地消息
- swift - 如果协议下的类在泛型函数之前是 var,则无法推断泛型参数“T”
- google-chrome-extension - Chrome 扩展程序:单个窗口中每个选项卡上的不同会话
- java - 如果相同的输入来自不同的数据源并且最终对象完全相同,应该使用哪种设计模式
- javascript - NetSuite - 将文件写入 Suitelet 响应以直接下载文件
- android - 由于 NestedScrollView,BottomAppBar 导航项不可点击