2009-08-24 11 views

risposta

0

utilizzare il metodo UITableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 

Info here.

+0

Forse il metodo seguente si adatta meglio? http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableViewCell/setHighlighted:animated: –

+0

quale metodo? il collegamento non va a nessun particolare metodo – Daniel

+1

O se lo enunci, quello lo evidenzia e non lo seleziona, immagino che questo sia tutto ciò che il richiedente vuole quindi è più adatto. – Daniel

6

Essere prudenti con questo metodo, in quanto la selezione della riga in questo modo è qualcosa che Apple suggests against esegue per mostrare uno stato "scelto".

Invece, considerare l'impostazione della proprietà accessoryType della cella su qualcosa come UITableViewCellAccessoryCheckmark.

+0

Sto cercando di replicare l'interfaccia utente di Apple quando aggiungo/modifica un evento nell'applicazione Calendario e imposta una data/ora di inizio e fine. Ho visto commenti sulla regola del segno di spunta altrove, ma sono incerto se si applicherebbe in questo caso (la tabella è usata per i componenti del layout piuttosto che presentare un elenco di dati). – user119857

+0

Questo è un punto interessante.In questo caso, non è necessario avere una sottoview per ciascuno degli Starts and Ends poiché entrambi rappresentano lo stesso tipo di dati, modificati dallo stesso tipo di UIPickerView. Questo rappresenterebbe un uso giudizioso. È probabile che utilizzino selectRowAtIndexPath di UITableView: animated: scrollPosition: method ... si veda http://tinyurl.com/yd9zs65 –

1

Sicuramente attenzione. Sono sicuro che hai una buona ragione, ma guarda attentamente il documento sulle linee guida dell'interfaccia umana fornito da Apple. Le app vengono rifiutate per non deselezionare le righe della tabella. Ti inviterei a trovare la sezione appropriata di HIG e vedere Apple offre suggerimenti.

41
-(void)viewWillAppear:(BOOL)animated { 
    // assuming you had the table view wired to IBOutlet myTableView 
    // and that you wanted to select the first item in the first section 
    [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
          animated:NO 
         scrollPosition:UITableViewScrollPositionTop]; 
} 

sto usando questa tecnica per selezionare una delle due UITableViewCells così gli utenti sa quale cella un UIDatePicker sotto la tabella vista effettuerà. Questa tecnica viene utilizzata da Apple nell'app del calendario quando si crea un nuovo evento e si impostano le date.

+1

1. questo non funziona per me. 2. Apple afferma che è necessario utilizzare il segno di spunta per indicare lo stato di selezione di un articolo. –

3

È necessario inserirlo in viewWillAppear.

[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
         animated:NO 
        scrollPosition:0]; 

Se si tenta di selezionarlo in cellForRowAtIndexPath:, allora non ci vorrà lo stile richiesto.

0

A volte, quando non si è in uno UIViewController, non si dispone di viewWillAppear ea volte è stato creato il proprio UITableView in modo programmatico.

La soluzione più semplice è quella di implementare questo metodo delegate:

- (void)tableView:(UITableView *)tableView 
     willDisplayCell:(UITableViewCell *)cell 
     forRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (self.selectedIndex == indexPath.row) { 
     cell.selected = YES; 
    } 
} 

E 'non funziona nel cellForRowAtIndexPath perché non è ancora visualizzata la cella. e il metodo setSelected viene chiamato solo quando viene visualizzato questo.

1

Usa questo codice per selezionare la cella per impostazione predefinita in vista tabella, indexPath può variare secondo il vostro bisogno

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0]; 
    [theTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; 
} 
Problemi correlati