2010-01-12 16 views
12

Ciao Sto cercando di rendere inattiva la mia uitableviewcell in modo che un utente non possa fare clic ma semplicemente pronunciare i dati nella cella. Provo a farlo con:Come impostare uitableviewcell su sdk per iPhone sdk

UITableViewCell *cell = nil; 
if (indexPath.row < factsCount) { 
static NSString *FactsCellIdentifier = @"FactsCell"; 
cell = [tableView dequeueReusableCellWithIdentifier:FactsCellIdentifier]; 
[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

Tuttavia, la cella può ancora essere selezionata e evidenziata.

Grazie per il vostro aiuto!

risposta

24

Per interrompere l'uso solo alcune cellule in corso di selezione anche:

cell.userInteractionEnabled = NO; 

Così come prevenire la selezione, questo si ferma anche tableView: didSelectRowAtIndexPath: essere chiamato per la celle che lo hanno impostato.

(ma si noti che disattiverà qualsiasi contenuto interattivo all'interno delle cellule - ad esempio pulsanti - per quel caso, selectionStyle impostare UITableViewCellSelectionStyleNone e ignorare il tableView:. DidSelectRowAtIndexPath: invito a quella cella)

+2

Questa è la migliore risposta qui – barfoon

+0

Ho notato che in alcuni casi, è necessario impostare in modo esplicito il colore del testo in nero (o qualsiasi colore) in impedirgli di diventare grigio, quale cell.userInteractionEnabled = NO; sembra fare automaticamente. Solo qualcosa di cui essere a conoscenza. – Ryan

+0

FYI se hai pulsanti nella tua cella, saranno anche disabilitati. In tal caso vuoi la risposta di Ole – Jameo

11

Impostare la cella selectionStyle su UITableViewCellSelectionStyleNone.

+0

cella è ancora cliccabile dopo averlo implementato. ho aggiornato la mia domanda con il codice. – Atma

+3

Tecnicamente, la cella è ancora cliccabile ma l'utente non vede la selezione. Ovviamente, devi anche assicurarti che l'implementazione di 'tableView: didSelectRowAtIndexPath:' non faccia nulla per questa particolare cella. –

+1

Se hai un pulsante all'interno della cella, questa è la soluzione che funziona –

4

Questo può essere fatto con:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

o

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
4

Per disabilitare la selezione delle cellule è possibile implementare -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath metodo nella vista tabella delegato e tornare a zero, se non si vuole cella con data NSIndexPath da selezionare.
Come già indicato in altre risposte per disabilitare l'evidenziazione delle celle, è necessario impostare la proprietà selectionStyle su UITableViewCellSelectionStyleNone.
fare in modo che si impostano le proprietà in modo corretto quando si riutilizza tableviewcells