В настоящее время у меня есть список из 70 вопросов в виде таблицы. Когда вопрос будет решен, таблица будет обновлена и будет отмечена галочка (все работает нормально).Тени в табличном виде сохраняют штабелирование (Swift)
Проблема, с которой я сталкиваюсь, связана с тенью, которую я добавляю в каждую из своих ячеек в виде таблицы. По какой-то причине они сохраняют стекирование при прокрутке вверх и вниз. Также при размещении устройства в ландшафте новый 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
}
Это решает теневой вопрос, НО, когда я поворачиваю устройство в альбомный режим, он не перерисовывается. Любые идеи? Приглашаются все
Ячейки повторно используются, поэтому вам необходимо убедиться, что тень и контрольный ковчег удалены/добавлены, если необходимо. Храните теневое представление как свойство вашей ячейки и удалите его, если на вопрос не был дан ответ, добавьте его, если он есть, - не добавляйте его снова, если свойство не равно нулю. То же самое с настройкой аксессуара. Как вы узнаете, разрешен ли вопрос или нет? – Paulw11
Я знаю, что вопрос решается путем проверки базы данных (код здесь не был добавлен, но это часть вопроса.showAfter = true. – SoundShock
Итак, в основном, если showAfter == true, вопрос должен отображаться с галочкой/shadow? – Paulw11