![](/img/trans.png)
[英]When I use UITableViewCell in order to customize each cell content, a screen layout is broken after scrolling in Swift4
[英]Why am I getting double content in UITableViewCell after scrolling? (Swift)
滾動后為什么在UITableViewCell中出現雙文本?
這是初始化單元格的代碼:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("IskanjeCell") as IskanjeShowTableViewCell!
cell.backgroundColor = UIColor.clearColor()
cell.setCell(DanKanali, indexPath: indexPath)
return cell
}
func setCell(danKanali:[DatePS], indexPath: NSIndexPath)
{
let vseOddaje = danKanali[indexPath.section].programi[indexPath.row].oddaje
let program:Program = danKanali[indexPath.section].programi[indexPath.row]
logoWrapper.frame = CGRectMake(5, CGFloat(5+(vseOddaje.count-1) * 10), logoWrapper.frame.width, logoWrapper.frame.height)
var sl = program.id.intValue
sl = sl + 1
var slik = String(sl)
mali_logo.image = UIImage(contentsOfFile: boundle.pathForResource(slik, ofType: "png")!)
ime_programa.text = program.ime
var i = 0
var base = 15
if program.oddaje.count == 1
{
base = 30 //če je samo 1 show, da postavi na sredino celice
}
for oddaja in program.oddaje
{
var showWrapper = UIView(frame: CGRectMake(100, CGFloat(base + i * 45), 300, 40))
var naslov = UILabel(frame: CGRectMake(0, 0, 300, 20))
var kategorija = UILabel(frame: CGRectMake(0, 17, 250, 20))
naslov.font = UIFont.boldSystemFontOfSize(14)
naslov.text = "\(oddaja.ura) - \(oddaja.naslov)"
naslov.textColor = UIColor.whiteColor()
kategorija.text = "\(oddaja.kategorija) / \(oddaja.podkategorija)"
kategorija.textColor = UIColor.whiteColor()
kategorija.font = UIFont.systemFontOfSize(13)
showWrapper.addSubview(naslov)
showWrapper.addSubview(kategorija)
self.contentView.addSubview(showWrapper)
i++
}
}
這就是我得到的:
我已經嘗試過if cell == nil,但是很快就不再支持此功能,還是我錯了?
在setCell
您正在調用addSubview
,但是在重新配置單元格時,您不會刪除或重復使用它們。
編輯 :添加到您的IskanjeShowTableViewCell
一個NSMutableArray
的showWrapper
對象。 [遵循目標C]
@interface IskanjeShowTableViewCell : UITableViewCell
// ...
@property (strong) NSMutableArray *showWrappers;
@end
- (void)setCell:(...) {
// ...
[self.showWrappers makeObjectsPerformSelector:@selector(removeFromSuperview)];
[self.showWrappers removeAllObjects];
for (id oddaja in program.oddaje) {
// ...
[self.showWrappers addObject:showWrapper];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.