Co chcesz zrobić, to dość nietypowe typ interfejsu użytkownika, ale jeśli naprawdę chcesz to zrobić, można wykonać następujące czynności (można znaleźć tutorial here):
w twojej tableViewController
, utworzyć indeks tablica, np tablica alfabetach, które mają być wyświetlane na stronie Twojego tableView
, np:
- (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;
}
Według docs: „tablicę łańcuchów, które służą jako tytuł rozdziału, w widoku tabeli i pojawią się na liście indeksów po prawej stronie widoku tabeli. Widok tabeli musi być w prostym stylu (UITableViewStylePlain
). Na przykład dla alfabetycznej listy możesz zwrócić tablicę zawierającą ciągi od "A" do "Z". "
To wszystko zależy od ciebie, jak sortujesz swoje dane w sekcjach tableView
. W twoim przypadku chcesz mieć cały czas posortowane dane w jednej sekcji, prawdopodobnie bez specjalnego nagłówka. Dlatego macierzy characters
rozpoczyna się od nagłówka @" "
o indeksie 0, a można umieścić cały swój czas posortowanych wpisów w sekcji 0. Następnie wdrożyć następujące metody:
- (NSInteger)tableView:(UITableView *)tableView
sectionForSectionIndexTitle:(NSString *)title
atIndex:(NSInteger)tappedIndex {
self.savedTappedIndex = tappedIndex;
return 0;
}
Metoda ta może być nieco mylące. Wykonuje następujące czynności: Kiedy użytkownik dotknie indeksu po stronie swojego tableView
(@" " … @"Z"
) określonego znaku w tablicy characters
, pozycja tego znaku w tablicy (jego indeksie) zostanie wprowadzona do tej metody. Możesz przechowywać go w nieruchomości. Jeśli zwrócisz 0, jak w przykładzie, sekcja 0 tabeli zostanie wyświetlona ponownie tak jak jest.
Jeśli wykonasz obserwację wartości klucza (KVO) nieruchomości savedTappedIndex
, otrzymasz powiadomienie, gdy tabela zostanie wyświetlona ponownie. Następnie można odczytać charakter podsłuchu przez
NSString *tappedCharacter = characters[self.savedTappedIndex];
W tej postaci można zakwestionować swój serwer do pasz, które zostały utworzone przez użytkowników, których nazwa zaczyna się od tej postaci.
Dane mogą być następnie wyświetlane w tableView
, ponownie w sekcji 0.
Oczywiście nie należy już wyświetlać indeksu po stronie tableView
.
To zachowanie może być bardzo mylące dla użytkownika, ponieważ jest dość nietypowe.
Ostatnia uwaga:
Nie należy używać hack powyżej na prawdziwe życie, ale można go używać do testowania interfejsu użytkownika, a prawdopodobnie będzie zobaczyć, że interfejs użytkownika nie jest dobre, ponieważ indeks zachowuje się inaczej niż zwykle.
Powinieneś szukać "indeksu sekcji UITableView". Indeks, o którym mówisz, jest częścią iOS i dość prosty do wdrożenia. Odpowiedzi kilka razy na Stack Overflow. – Fogmeister
Używając twojej metody, myślę, że widok musi być już uporządkowany w kolejności alfabetycznej, przewijanie pomaga tylko szybko przejść do każdej sekcji. Podczas gdy moje pytanie dotyczy listy uporządkowanej według daty, a kiedy ją przewiń, uporządkuj według alfabetu. – user1314404
ah Widzę. Czy nie martwisz się, że łamiesz podstawowe zachowanie systemu iOS? Jeśli użytkownik zobaczy listę alfabetyczną po prawej stronie ekranu, której uczył (przez ponad 8 lat doświadczenia), jest to szybki sposób przewijania listy. Zmieniając to w sposób, który proponujesz, sprawisz, że Twoja aplikacja będzie wyglądać na uszkodzoną i zniechęci użytkowników do jej używania. – Fogmeister