如何在tableview单元格中加载内容视图?

时间:2015-03-19 11:06:50

标签: ios uitableview swift swift-playground

我创建了一个表格视图

 var tblView : UITableView = UITableView()
        tblView.frame = CGRectMake(0, 168, 320-50 , 450)
        tblView.separatorColor = UIColor.clearColor()
        tblView.scrollEnabled = false
        tblView.rowHeight = 39
        self.addSubview(tblView)
        tblView.delegate = self
        tblView.dataSource = self
        tblView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "myCell")

现在我正在尝试将自定义视图添加到tableviewcell

 //MARK:  table view data source methods
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

     var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("myCell") as UITableViewCell
     var cellImgView:UIImageView = UIImageView()
     cellImgView.frame = CGRectMake(cell.contentView.frame.origin.x+10, cell.contentView.frame.size.height, 20, 20)
     let cellImage = UIImage(named: self.cellImgs[indexPath.row])
     cell.backgroundColor = UIColor(red: 0.000, green: 0.400, blue: 0.404, alpha: 1.00)
     cellImgView = UIImageView(image: cellImage)
     cell.contentView.addSubview(cellImgView)
     return cell
} 

只有第一张图像位于正确的位置而其他图像重叠。为什么会发生这种情况?

2 个答案:

答案 0 :(得分:0)

每当用户看到单元格时,都会调用cellForRowAtIndexPath。 但是你只需要添加一次UIImageView。所以,你需要检查,是否有第一个电话。

此外,最好使用自定义UITableViewCell

答案 1 :(得分:0)

Tableview正在重用已创建的单元格,因此您的方法并不是最好的。你现在正在做的是每次使用一个单元时创建UIImageView,如果它是一个将被重用的单元格,你将在之前的单元之上创建新的UIImageView。

我建议在界面构建器中完成所有这些操作。如果你不想,至少是子类UITableViewCell并在你的单元格的init方法中创建图像视图,那将会处理彼此重叠的UIImageview,但仍然考虑使用界面构建器,这是构建表视图的最简单方法。

修改

以下是界面构建器中有关tableviews的一些教程,这可以帮助您入门:http://shrikar.com/blog/2015/01/17/uitableview-and-uitableviewcell-customization-in-swift/

祝你好运!