我创建了一个表格视图
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
}
只有第一张图像位于正确的位置而其他图像重叠。为什么会发生这种情况?
答案 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/
祝你好运!