表视图显示为空而不是符合我的自定义单元格

时间:2016-12-05 20:23:16

标签: ios swift uitableview

我有一个包含自定义单元格的tableview,其中包含一系列项目。我初始化一个空数组和一些像这样的数据

    var venues = [String]()
    var images = [String]()
    var nycVenues = ["Webster Hall", "Output", "The Woods"]
    var nycImages = ["Webster", "Output", "Woods"]

然后,根据页面标题的内容,该数组将填充相应的数据。这是我在cellForRowAt indexPath中的代码

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! VenueCell


    if (self.navigationItem.title == "NYC Venues") {
        nycVenues = venues      //fill the empty venue array with nycVenues
        nycImages = images    //fill the empty images array with nycImages
        cell.textLabel?.text = venues[indexPath.row]
        DispatchQueue.main.async {
            cell.venueImageView.image = UIImage(named: images[indexPath.row])!
        }
    }
    //.....other venues set up the same way
    return cell
}

部分

中的行数
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return venues.count
}

设置单元格的高度

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 72
}

这是我的自定义单元格

class VenueCell: UITableViewCell {

override func layoutSubviews() {
    super.layoutSubviews()
    textLabel?.frame = CGRect(x: 100, y: textLabel!.frame.origin.y - 2, width: textLabel!.frame.width, height: textLabel!.frame.height)
    detailTextLabel?.frame = CGRect(x: 64, y: detailTextLabel!.frame.origin.y + 2, width: detailTextLabel!.frame.width, height: detailTextLabel!.frame.height)
}


let venueImageView: UIImageView = {

    let imageView = UIImageView()
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.layer.masksToBounds = true
    imageView.contentMode = .scaleAspectFill
    return imageView

}()

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)

    addSubview(venueImageView)
    venueImageView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 8).isActive = true
    venueImageView.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
    venueImageView.widthAnchor.constraint(equalToConstant: 48).isActive = true
    venueImageView.heightAnchor.constraint(equalToConstant: 48).isActive = true


}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}


}

问题是,当表格视图出现时,它只显示一个空的默认tableview(不符合我的自定义单元格,并且没有任何项目)。有人知道我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

更新

正如评论中提到的paulw11所述venuesimages数组的分配应该在调用 tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)之前。因此,在viewDidLoad中进行分配应该可以解决问题。

原始

您的问题出在tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell。检查if语句并更改这两行

nycVenues = venues      //fill the empty venue array with nycVenues
nycImages = images    //fill the empty images array with nycImages

venues = nycVenues      //fill the empty venue array with nycVenues
images = nycImages    //fill the empty images array with nycImages