我只是想让每个单元格中出现一个不同的UIView。所以我这样做:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell
cell.textLabel?.text = self.items[indexPath.row]
if(indexPath.row == 0){
print("Index path shold be 0 : \(indexPath.row)")
maleIcon = MaleIconView(frame: CGRect(x: 0, y: 0, width: 55, height: 55))
maleIcon.center.x = cell.center.x + cell.center.x * 0.5
maleIcon.center.y = cell.contentView.center.y
maleIcon.layer.cornerRadius = 0.5 * maleIcon.bounds.size.width
cell.addSubview(maleIcon)
}
else if(indexPath.row == 1){
//Next UIView(different from one above) will go here
}
return cell
}
我总共有12个细胞。 UIView首先出现在正确的单元格中,但是如果你继续向下滚动,同一个UIView将出现在不同的单元格中,然后向上滚动UIView将会消失,从这里它就会遍布整个屏幕。请帮忙!我今天必须把这个应用程序拿出来!!
答案 0 :(得分:1)
在数据源中添加子视图是非常糟糕的。因为重用,视图会创建很多次。解决方案是在故事板中制作两个具有不同标识符的类型单元格。然后在故事板中添加MaleIconView(它将调用init (编码器:)功能,请覆盖它。)
另一个解决方案是在自定义单元格prepareForReuse()中删除MaleIconView。您不需要为此创建新单元格。
我查看了您的代码。您应该在func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
更优雅的解决方案是使用静态表视图,这样可以轻松实现。