所以我有一个自定义的UITableVIewCell类:
class MovieTableViewCell: UITableViewCell {
@IBOutlet weak var movieImageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var priceLabel: UILabel!
}
并在TableViewController返回单元格
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let tableViewCell: MovieTableViewCell = tableView.dequeueReusableCell(withIdentifier: "movieCell", for: indexPath) as! MovieTableViewCell
tableViewCell.titleLabel.text = "Title"
tableViewCell.priceLabel.text = "Price"
return tableViewCell
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return movies.count
}
我已在viewdidload中将delegate
和datasource
分配给self,并确保所有reuseIdentifier和name类完全相同。但是当我在模拟器中运行它时,tableview不会返回任何标签。
基本上我有一个名为movies
的空数组,并在viewDidLoad
中执行网络处理,并将每个对象附加到电影上。这是我的网络功能。
func getAllMovies() {
Alamofire.request("https://itunes.apple.com/us/rss/topmovies/limit=25/json").responseJSON { (response) in
if let json = response.result.value as? [String: AnyObject] {
let feed: [String: AnyObject] = json["feed"] as! [String: AnyObject]
let entries = feed["entry"] as! NSArray
for (index, entry) in entries.enumerated() {
let movie = Movie()
let dict = entry as! [String: AnyObject]
if let link = dict["id"]?["label"] {
movie.itunesURL = link as! String
}
if let title = dict["im:name"]?["label"] {
movie.title = title as! String
} else {
movie.title = "No Available"
}
if let price = dict["im:price"]?["label"] {
movie.price = price as! String
} else {
movie.price = "$0.00"
}
if let date = dict["im:releaseDate"]?["label"] {
movie.releasedDate = date as! String
}
self.images = dict["im:image"] as! NSArray
self.imgageAttribute = self.images[0] as! [String: AnyObject]
if let imageURL = self.imgageAttribute["label"] {
movie.coverImageURL = imageURL as! String
}
self.movies.append(movie)
}
}
}
}
答案 0 :(得分:1)
添加tableView.reloadData()
。