У меня есть обычай UITableViewCell
, и он работал нормально, но я обновился до xcode 8, и я все еще использую Swift 2.3 и только начал замечать эту проблему, m не на 100% уверен, когда это начнет происходить.UITableViewCell не форматируется должным образом изначально
Я настраиваю ячейку, и все, что она делает, это сделать этикетку круговой и поместить внутри нее число с именем рядом с ним. Он должен выглядеть следующим образом:
Однако, когда экран первоначально нагрузки, круговая метка отсутствует. Если я прокручу вниз по таблицеView, хотя и строка покидает экран, когда я прокручиваю назад и снова становится в фокусе, появляется метка. То же самое с аксессуаром, если я нажму, чтобы отредактировать строку, а затем вернуть метку круга. Почему он не работает на начальной загрузке?
Вот пользовательский код UITableViewCell:
func circleLabels(label: UILabel, hex: String){
label.layer.cornerRadius = label.frame.size.width/2
label.layer.masksToBounds = true
}
func configureForPlayer(player: Player) {
playerName.text = player.name
jerseyLabel.text = String(player.jersey)
circleLabels(jerseyLabel, hex: "#6470FF")
}
CellForRowAtIndexPath
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("PlayerCell", forIndexPath: indexPath) as! PlayerCell
let player = fetchedResultsController.objectAtIndexPath(indexPath) as! Player
cell.configureForPlayer(player)
return cell
}
Можете ли вы добавить код метода 'cellForRowAtIndexPath'? – Marcio
@ Марсио, конечно, я добавил. Не уверен, почему он прекратил делать это изначально – Jonnny
Мое предположение заключается в том, что 'label.frame' еще не установлен, когда вызываются« круглые метки »в первый раз. После того, как он был нарисован, и 'label.frame' имеет фактический размер, тогда код начинает работать как ожидалось. Если я правильно поместил константу, а не 'label.frame.size.width/2', исправьте проблему. – Marcio