Che cosa si vuole fare è un tipo piuttosto insolito di interfaccia utente, ma se si vuole veramente fare questo, si potrebbe procedere come segue (è possibile trovare un tutorial here):
Nella tua tableViewController
, creare un indice array, ad es un array di caratteri alfabetici che si desidera visualizzare a lato della vostra tableView
, per esempio:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
NSARRAY *characters = @[@" ", "A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z"];
return characters;
}
Secondo il docs: “Un array di stringhe che servono come il titolo di sezioni nella vista tavolo e compaiono nell'elenco degli indici sul lato destro della visualizzazione tabella. La vista tabella deve essere in stile semplice (UITableViewStylePlain
). Ad esempio, per un elenco in ordine alfabetico, è possibile restituire un array contenente le stringhe da "A" a "Z". "
Sta a te decidere come ordinare i dati nelle sezioni di tableView
. Nel tuo caso, vuoi avere tutti i dati ordinati in una sezione, probabilmente senza un'intestazione speciale. Pertanto l'array characters
inizia con un colpo di testa @" "
indice 0, e si mette tutto il vostro tempo voci in ordine nella sezione 0. Poi, implementano il seguente metodo:
- (NSInteger)tableView:(UITableView *)tableView
sectionForSectionIndexTitle:(NSString *)title
atIndex:(NSInteger)tappedIndex {
self.savedTappedIndex = tappedIndex;
return 0;
}
Questo metodo può essere un po 'di confusione. Esegue quanto segue: Quando l'utente tocca l'indice sul lato del tuo tableView
(@" " … @"Z"
) un determinato carattere nell'array characters
, la posizione di questo carattere nell'array (il suo indice) viene immessa in questo metodo. Puoi conservarlo in una proprietà. Se si restituisce 0 come nell'esempio, la sezione 0 della tabella verrà nuovamente visualizzata così com'è.
Se si esegue l'osservazione del valore chiave (KVO) della proprietà savedTappedIndex
, verrà visualizzata una notifica quando la tabella viene nuovamente visualizzata. È quindi possibile leggere il carattere sfruttato da
NSString *tappedCharacter = characters[self.savedTappedIndex];
Con questo personaggio, si può mettere in dubbio il vostro server per i feed, che sono stati creati dagli utenti il cui nome inizia con questo personaggio.
I dati possono quindi essere visualizzati nel numero tableView
, sempre nella sezione 0.
Naturalmente, non è più necessario visualizzare l'indice sul lato dello tableView
.
Ancora una volta, questo comportamento può essere molto confuso per l'utente, dal momento che è piuttosto inusuale.
Nota finale:
non si dovrebbe usare l'hack sopra per una reale attuazione, ma si potrebbe usare per testare l'interfaccia utente, e probabilmente vedrete che l'esperienza utente non è buona, dal momento che l'indice si comporta diversamente come al solito.
Si dovrebbe cercare "Indice sezione UITableView". L'indice di cui parli fa parte di iOS e è abbastanza semplice da implementare. È stato risposto più volte su Stack Overflow. – Fogmeister
Utilizzando il metodo, penso che normalmente la vista debba già essere ordinata in ordine alfabetico, lo scorrimento aiuta solo a passare rapidamente a ciascuna sezione. Mentre la mia domanda riguarda la lista ordinata per data, e quando lo si scorre riordina in ordine alfabetico. – user1314404
ah vedo. Non sei preoccupato che stai infrangendo un comportamento fondamentale di iOS? Se un utente visualizza un elenco alfabetico nella parte destra dello schermo, gli è stato insegnato (con oltre 8 anni di esperienza) che è un modo rapido per scorrere l'elenco. Modificando ciò nel modo in cui lo stai proponendo, la tua app sembrerà interrotta e impedirà agli utenti di utilizzarla. – Fogmeister