2016-09-08 1 views
0

行を選択すると、テキストの色が白くなります。ただし、行を更新するためにスクロールすると、テキストの色が黒に戻ります。したがって、if(cell.selected)というロジックを追加しました。しかし、それは動作しませんでした。私がスクロールするとき。cell.selectedが機能しません

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)! 
    for subview in selectedCell.subviews { 
     if let view = subview as? UILabel { 
      view.textColor = UIColor.whiteColor() 
     } 
    } 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var renderWidth:CGFloat = 8 
    var renderYPosition:CGFloat = 15 
    let cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "idcell") 
    let date = UILabel(frame: CGRectMake(renderWidth, renderYPosition, 110, 20)) 
    let dateText = "asdasdsad" 
    date.text = dateText 
    if (cell.selected) { 
     date.textColor = UIColor.whiteColor() 
    } 
    cell.addSubview(date) 
} 
+0

「スクロールして行を更新する」とはどういう意味ですか? 'reloadData'のような関数を呼び出しましたか? –

+0

番号。私はcellforrowatindexpathを意味する – henry

+0

なぜあなたの細胞を再使用しないでください? –

答えて

0

あなたは新しいUITableViewCell毎回作成している - :case.Hereがコードである場合、コードは入ることができません。再使用することをお勧めします。

代わりにこれで新しいセルを作成する:

let cell:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "idcell") 

使用このセルを再利用するには、次の

let cell = tableView.dequeueReusableCellWithIdentifier("cellIdInStoryboard", forIndexPath: indexPath) as! UITableViewCell 

識別子を使用して、ストーリーボードで設定したものと同じでなければなりません。

0

cellForRowAtIndexPath関数のif節に問題があります。また、tableviewを読み込むたびにセルインスタンスを作成します。テーブルビューセルを再利用する必要があります。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var renderWidth:CGFloat = 8 
    var renderYPosition:CGFloat = 15 
    let cell = tableView.dequeueReusableCellWithIdentifier("idcell", forIndexPath: indexPath) as! YourTableViewCell 
    let date = UILabel(frame: CGRectMake(renderWidth, renderYPosition, 110, 20)) 
    let dateText = "asdasdsad" 
    date.text = dateText 
    if (cell.selected) { 
     date.textColor = UIColor.whiteColor() 
    } else { 
     date.textColor = UIColor.blackColor() // You didn't add else 
    } 
    cell.addSubview(date) 
} 
関連する問題