我目前在tableview中列出了70个问题。一旦问题得到解决,表格就会更新并显示一个复选标记(一切正常)。
我遇到的问题是我在tableview中添加到每个单元格的阴影。出于某种原因,他们在向上和向下滚动时保持堆叠。此外,当将设备放置在横向中时,将绘制新的CGRect,但旧的CGRect仍然存在(也重叠)。
代码:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:QuestionCell = tableView.dequeueReusableCellWithIdentifier("cell") as! QuestionCell
let bgColorView = UIView()
bgColorView.frame = CGRectMake(5, 5, (tableView.frame.width)-10, (cell.frame.height)-10)
bgColorView.backgroundColor = UIColor.clearColor();
cell.selectedBackgroundView = bgColorView
let myBackView=UIView(frame:cell.frame)
myBackView.frame = CGRectMake(5, 5, (tableView.frame.width)-10, (cell.frame.height)-10)
myBackView.backgroundColor = UIColor.whiteColor();
myBackView.layer.masksToBounds = false
myBackView.clipsToBounds = false
myBackView.layer.cornerRadius = 3
myBackView.layer.shadowOffset = CGSizeMake(-1, 1)
myBackView.layer.shadowRadius = 2
myBackView.layer.shadowOpacity = 0.4;
let test:CGRect = myBackView.layer.bounds
myBackView.layer.shadowPath = UIBezierPath(rect: test).CGPath
cell.addSubview(myBackView)
cell.sendSubviewToBack(myBackView)
if (question.showAfter == "true") {
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
//give header of correct question blue color
cell.backgroundColor = UIColor.lightTextColor()
cell.headerQuestion.textColor = UIColor(red:0.01, green:0.53, blue:0.82, alpha:1.0)
}
else
{
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
cell.backgroundColor = UIColor.whiteColor()
cell.headerQuestion.textColor = UIColor(red:0.38, green:0.49, blue:0.55, alpha:1.0)
}
return cell
}
我已经尝试过以下内容(这是某个关于Objective-C主题的人的解决方案):
let tag = 120
if (cell.tag != 120) {
//the above code here
cell.tag = tag
}
这解决了阴影问题,但是当我将设备转为横向模式时,它不会重绘。 有任何想法吗?欢迎所有人
答案 0 :(得分:2)
每次重复使用单元格时,都会添加新阴影。您应该只在创建时添加一次阴影。
创建UITableViewCell
的子类并在那里进行常规自定义(背景颜色,阴影)。然后使用tableview注册您的课程。只在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
答案 1 :(得分:1)
试试这个:
bindkey -M menuselect '^M' .accept-line