2014-11-01 1 views
0

У меня есть UITableView, у которого есть динамическое подчинение.Подвижность в ячейке теряет цвет при изменении таблицы.

Если таблица является статическим это выглядит следующим образом: enter image description here Круглый вид с Т обычаем подтаблица

Но когда я выбираю редактировать и перетащить таблицу ячейки, она теряет его цвет и T.

enter image description here

Что причина этого?

Я инициализировать ячейку, как это (Это прототип IB Cell):

func configureCell(cell: UITableViewCell, atIndexPath indexPath: NSIndexPath) { 
     let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as Item 
     //cell.textLabel.text = object.valueForKey("name")!.description 
     let cSubView = cell.viewWithTag(100) as RoundedIcon 
     cSubView.setUpViewWithFirstLetter(String(first(object.name)!).uppercaseString) 
    } 

И RoundedIcon работает так:

override init(frame: CGRect) { 
    super.init(frame: frame) 
    self.layer.cornerRadius = self.frame.size.width/2; 
    self.layer.borderWidth = 1.0; 
    self.layer.borderColor = UIColor.lightGrayColor().CGColor; 
    self.clipsToBounds = true; 
} 

func setUpViewWithFirstLetter(letter:String){ 
     self.backgroundColor = RoundedIcon.UIColorFromRGB(0x68C3A3) 
     let theLetterLabel = UILabel() 
     theLetterLabel.text = letter 
     theLetterLabel.textColor = UIColor.whiteColor() 
     theLetterLabel.textAlignment = .Center 
     theLetterLabel.font = UIFont.systemFontOfSize(25) 
     self.addSubview(theLetterLabel) 
     theLetterLabel.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: self.frame.size) 
    } 
+0

Вы можете показать просмотр иерархии Tableview - от вида навигатора? – Spectravideo328

+1

Я думаю, что это просто нормальное поведение ячейки во время перетаскивания. Вы на самом деле не теряете «Т», но вы просто не видите его, потому что он белый. Если вы сделаете любой другой цвет, вы увидите его во время перетаскивания. Нормальная метка (без каких-либо модификаций) с фоновым цветом также теряет свой цвет во время перетаскивания. – rdelmar

+0

@rdelmar вы правы. Ярлык остается на месте. Так в чем причина его потери цвета фона? – arnoapp

ответ

1

@ комментарий rdelmar в указал мне в правильном направлении, что UITableview изменяет цвет фона всех его ячеек на:

UIColor(white:0,alpha:0) 

Если вы не используете хотите, чтобы ваш взгляд, чтобы изменить его цвет, вы должны изменить свойства сеттер BackgroundColor, который работает в стрижа, как это:

//override this setter to avoid color resetting on drag 
override var backgroundColor:UIColor?{ 
    didSet { 
     //check the color after setting - you also can do it earlier 
     if let bgCol = backgroundColor{ 
      println(bgCol) 
      if bgCol == UIColor(white: 0, alpha: 0){ //check if it's settled by the table 
       super.backgroundColor = yourColor //set it back to your color 
      } 
     } 
    } 
}