2016-10-09 10 views
0

私はカスタムUITableViewCellを持っていますが、正常に動作しましたが、xcode 8にアップグレードしましたが、Swift 2.3をまだ使用していて、それが起こり始めると100%確信していません。UITableViewCellは正しく初期設定されていません

私はセルを構成しています。セルを構成するには、ラベルを円形にしてその内部に名前を付けます。しかし、画面が最初の円形ラベルが欠落している、ロードするとき

enter image description here

:それは次のようになります。私はtableViewを下にスクロールし、行が画面を離れる場合、私はスクロールし、再びフォーカスになるラベルが表示されます。付属品と同じですが、クリックして行を編集してから円のラベルを返すと、ラベルが生成されます。なぜ初期の負荷で動かないのですか?ここで

は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 
} 
+0

'cellForRowAtIndexPath'メソッドのコードを追加できますか? – Marcio

+0

@Marcioもちろん、私は追加しました。なぜそれが最初にそれをやめたのか分かりません – Jonnny

+0

私は 'circleLabels'が初めて呼び出されたときに' label.frame'がまだ設定されていないと考えています。描画され、 'label.frame'が実際のサイズを持つと、コードは期待どおりに動作します。私が 'label.frame.size.width/2'の代わりに定数を置くのであれば、問題を修正するべきです。 – Marcio

答えて

1

私の推測では、circleLabelsが最初に呼び出されたときlabel.frameがまだ設定されていないということです。描画されてlabel.frameが実際のサイズになると、コードは期待どおりに動作します。私が正しい場合は、label.frame.size.width/2の代わりに定数を入れて問題を修正する必要があります。

関連する問題