我的TableViewCell存在问题
我的故事板中有两种类型的单元格。 当我滚动时,文本在某些单元格中重叠。我尝试了一切,但我不知道该怎么办。非常感谢你的帮助
interface IDao<TEntity> where TEntity : IEntity
{
TEntity Save(TEntity ent);
IQueryable<TEntity> GetAll();
bool Delete(TEntity ent, out String errMsg);
void SaveChanges();
}
答案 0 :(得分:7)
我可以解决这个问题。在故事板中,标签没有“清除图形上下文”。我查了一下,现在它解决了!谢谢你的帮助!
答案 1 :(得分:0)
过去我的UITableViews有一个类似的问题。有许多事情可能会导致这种情况,但也许发生在我身上的事情也是如此。
我看到你正在使用自定义tableViewCell。可能发生的情况是,当您设置单元格的文本时,它会添加带有该文本的标签视图。现在说你滚动浏览tableview,那个单元格消失了。如果您要重复使用该单元格并且未从子视图中删除标签,或者将该标签的文本再次设置为所需文本,则将重新使用tableviewcell并在其上添加新标签并添加新标签文本到它,重叠文本。
我的建议是确保您不会在TimelineCell类中添加UIlabel作为子视图,除非不存在标签。如果存在标签,则编辑该标签的文本而不是单元格。
答案 2 :(得分:0)
表视图的数据源实现 tableView:cellForRowAtIndexPath:应始终重置所有内容 重用一个单元格。
看来你的问题是你并不总是设置postLabel,导致它在其他单元格上面写,试试这个:
//reuse postLabel and set to blank it no value is returned by the function
let cell = tableView.dequeueReusableCellWithIdentifier("TimelineCell", forIndexPath: indexPath) as? TimelineCell
cell!.nameLabel.text = storeNew.getName()
if newNotice.getText() != nil{
cell!.postLabel.text = newNotice.getText()
} else {cell!.postLabel.text = ''}
cell!.postLabel.numberOfLines = 0
cell!.dateLabel.text = newNotice.getDate()
cell!.typeImageView?.tag = indexPath.row;
return cell!
}
//Make postLabel mandatory and set the font details in the xcode
class TimelineCell : UITableViewCell {
@IBOutlet var nameLabel : UILabel!
@IBOutlet var postLabel : UILabel!
@IBOutlet var dateLabel : UILabel!
override func awakeFromNib() {
//set this in xcode
}
override func layoutSubviews() {
super.layoutSubviews()
}
另外请确保您没有创建任何UI元素并附加到单元格,就好像您需要在回收单元格之前处置它一样。
答案 3 :(得分:0)
您可以尝试设置:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 44.0 // Set this value as a good estimation according to your cells
}
在包含tableView
。
确保TimelineCell
中的布局限制定义清除高度限制线
另一个选择是回复:
tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 44.0 // Your height depending on the indexPath
}
始终在包含tableView
的ViewController中,我认为是tableView
的{{1}}
希望这有帮助
答案 4 :(得分:0)
将单元格设置为nil将修复一些错误。 func tableView(_ tableView:UITableView,cellForRowAt indexPath:IndexPath) - &gt;的UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? ImageCellTableViewCell
cell = nil
if cell == nil {
cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for:indexPath) as? ImageCellTableViewCell
}
cell.yourcoustomtextTextLabel.text = "this is text"
cell.yourcoustomtextImageView.image = image
return cell
}