2015-02-19 6 views
11

Sto riscontrando problemi con la mia cella di visualizzazione tabella. Non è possibile disabilitare l'evidenziazione della selezione della cella della tabella dopo il ritorno dalla visualizzazione dettagliata alla visualizzazione della tabella principale utilizzando segue con il controller di navigazione incorporato. La cella della tabella è ancora selezionata. Non voglio che la selezione della cella della tabella sia disabilitata quando faccio clic su una di esse per mostrare i dettagli. Voglio solo disabilitarli dopo che torno dalla visualizzazione dei dettagli.Come disattivare l'evidenziazione della cella di tabella selezionata dopo essere tornati dalla vista di dettaglio (Segue posteriore)

risposta

30

L'ho capito ora. Ho risolto così. È una teoria semplice.

Abbiamo appena deselezionarlo quando si seleziona la riga

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

Perché un punto interrogativo dopo 'tableView'? È di tipo 'UITableView' non' UITableView? '. – BallpointBen

3

Si potrebbe anche disabilitare la selezione delle cellule evidenziazione:

import Foundation 

class CustomTableViewCell: UITableViewCell 
{ 
    required init(coder aDecoder: NSCoder) 
    { 
    fatalError("init(coder:) has not been implemented") 
    } 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) 
    { 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 
    self.selectionStyle = UITableViewCellSelectionStyle.None 
    } 
} 
+0

Grazie signore. Apprezzo molto il tuo aiuto. Non posso disabilitare la selezione della mia cella di tabella. Voglio solo nascondere l'evidenziazione dopo aver selezionato una cella e tornare dai dettagli. –

+0

Questo in realtà disabiliterà l'evidenziazione - la selezione funzionerà ancora. – Zorayr

1
self.selectionStyle = UITableViewCellSelectionStyle.None 

dovrebbe essere sufficiente a esclusione func awakeFromNib() troppo :)

Ho ricevuto un errore irreversibile quando ho adottato il codice precedente.

+0

Questo va bene, ma non mostra nulla all'utente sulla cella che ha selezionato –

3

Soluzione per Swift3:

Permetterà selezione e questa è la correzione per rapida 3.

cell.selectionStyle = UITableViewCellSelectionStyle.none 
0

Swift 3

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

perché rispondere alla domanda che è già la stessa tua? Se hai una soluzione migliore, sei il benvenuto a modificare. –

1

Il modo in cui mi piace farlo , se la selezione singola è abilitata, è necessario utilizzare il metodo viewDidAppear. In questo modo l'utente può vedere l'animazione di deselezione quando ritorna al TableView.

override func viewDidAppear(_ animated: Bool) { 
    if let selectedRow = tableView.indexPathForSelectedRow { 
     tableView.deselectRow(at: selectedRow, animated: true) 
    } 
} 
+0

Grazie per aver collaborato alla risposta –

Problemi correlati