2015-10-09 5 views
5

Quando tocco le celle della vista tabella, si scuriscono in un colore grigio e non tornano al bianco finché non tocco una cella diversa. C'è una specie di booleano che devo impostare per non farlo?Perché i miei UITableViewCells diventano grigi quando li tocco?

Ecco uno screenshot che spiega il mio problema:

enter image description here

Link ad altri siti sarebbe utile, se ciò significherebbe una descrizione più dettagliata. (A meno che non si tratta di una soluzione super semplice, quindi il codice giusto o passi da prendere sarebbe più facile di un collegamento.)

+0

Quindi, quando si preme su una cella, si desidera solo il segno di spunta e non la selezione di grigio? –

risposta

15

Questo è il comportamento predefinito di UITableView.

È necessario chiamare deselectRowAtIndexPath all'interno di didSelectRowAtIndexPath nella classe UITableViewController.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 
} 

Consultare la documentazione di iOS per ulteriori informazioni.

UITableView
UITableViewDelegate

+0

Ci scusiamo per la risposta tardiva. Questo ha fatto esattamente quello che volevo. Grazie, Qasim! –

+0

Grazie mille. Avuto il mio tempo. –

+0

Considera @Anthony la risposta di Dito. Ciò evita che una riga lampeggi in grigio quando viene toccata. – Carl

6

si può fare questo un paio di modi ...

  1. tableView.allowsSelection = false

  2. È possibile impostare tableView in xCode Storyboard per non avere alcuna selezione nella quarta scheda.

  3. In alternativa, è possibile farlo sulla cella cell.selectionStyle = UITableViewCellSelectionStyle.None

quello che vuoi è in ultima analisi, sarà di quello che un comportamento che si sta dopo. Fai solo un po 'di sperimentazione.

1

È possibile modificare lo stile da:

[cell setSelectionStyle:UITableViewCellSelectionStyleGray]; 
3

Swift 3

Opzione 1: (che io uso sempre)

Per dare si fade out animazione dopo selezionato con il grigio si può fare questo:

func tableView(_ tableView: UITableView, 
     didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: true) 
} 

Opzione 2:

Per rimuovere l'effetto di evidenziazione del tutto è possibile aggiungere questa riga al cellForRowAt:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = ..... 
    cell.selectionStyle = .none 
    return cell 
} 
+1

L'opzione 2 mi ha aiutato a risolvere il problema dell'effetto sfondo grigio lampeggiante prima del colore impostato. Molte grazie! – user30646

+0

@ user30646 Felice che ti abbia aiutato :) – MBH

1

Swift 3

In una cella personalizzata aggiungere:

override func awakeFromNib() { 
    super.awakeFromNib() 
    selectionStyle = .none 
} 

Questo assicura che non si vedrà il grigio quando la cella viene toccata. Questo codice in UITableViewDelegate deseleziona solo quando toccato.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: true) 
}