UITableView始终在Swift中显示基本单元格而不是自定义单元格

时间:2018-01-21 00:16:58

标签: ios swift uitableview xcode9

我花了几个小时试图解决这个问题,但我的简单应用仍然显示基本的单元格类型,而不是我的原型单元格。我知道在加载视图后使用标识符并注册,但它仍然显示只有一个标签的基本单元格。

到目前为止,这是我的代码:

我的原型正在使用这个UITableViewCell:

class CoinTableViewCell: UITableViewCell {

    @IBOutlet weak var coinIcon: UIImageView!
    @IBOutlet weak var coinTitleLabel: UILabel!
    @IBOutlet weak var holdings: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
    }
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
}

的UITableViewController:

class CoinTableViewController: UITableViewController {

  var coins = ["Coin1","Coin2","Coin3"]

  override func viewDidLoad() {
       super.viewDidLoad()
       self.tableView.register(CoinTableViewCell.self, forCellReuseIdentifier: "currency_cell")
   }

  override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
   }

   override func numberOfSections(in tableView: UITableView) -> Int {
       return 1
   }

   override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       return coins.count
   }

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

       let cell:CoinTableViewCell! = self.tableView.dequeueReusableCell(withIdentifier: "currency_cell", for: indexPath) as! CoinTableViewCell
       let coinName = coins[indexPath.row]
       cell.coinTitleLabel?.text = coinName
       return cell!

   }
}

Setting the cell identifier

Screenshot from iPhone Simulator

如果有人能帮我解决这个问题,我将非常感激!

1 个答案:

答案 0 :(得分:3)

您正在故事板中的tableview上直接创建自定义单元格,对吧? 如果是这种情况,那么您不需要在viewDidLoad中注册单元格,因为故事板会处理这个问题。你只是去了它,这是很好的去。

如果您手动注册它,您只需覆盖故事板所执行的操作,最终获得常规单元格,因为单元格从代码中实例化,而不是从故事板中实例化。

干杯