Die Dokumentation ist nicht wirklich klar darüber. Warum wird die UITableViewDataSource aufgefordert, den Abschnittsindex für den Titel eines Indexleistenabschnitts anzugeben?
Ich meine ... welche Anwendungsfälle machen diese Methode wichtig? Wann heißt das und warum?
Grundsätzlich wird definiert, in welchen Abschnitt die Tabellenansicht scrollt, wenn Sie auf den angegebenen Abschnittindextitel klicken. Nehmen wir an, Sie definieren Ihre Indextitel als die Buchstaben A bis Z, aber Sie haben tatsächlich keine Artikel für jeden Buchstaben. In -tableView:sectionForIndexTitle:atIndex:
würden Sie den Abschnitt next angeben, der ein Element enthält.
Diese Website hat eine gute Antwort:
sectionIndexTitlesForTableView : Um den Index ordnungsgemäß darzustellen, muss das UITableView alle anzuzeigenden Indextitel kennen. Diese Methode gibt ein Array von Strings zurück, die alle Indizes enthalten. In unserem Fall A, B, C, D usw.
sectionForSectionIndexTitle : Wenn Sie durch den Index scrollen, muss die Tabelle wissen, wie weit Sie scrollen müssen, damit der Buchstabe, den Sie berühren, dem entsprechenden Abschnitt in der Tabelle entspricht. Diese Methode gibt einen Indexwert (Ganzzahl) des Abschnitts zurück, den Sie gerade im Index berühren.
Die Methode, die Sie zu "-tableView: sectionForSectionIndexTitle: atIndex:" abgefragt haben, verbindet 2 (unten) verwandte Listen bezüglich der Datenpopulation von UITableView.
1. Liste: TableView-Sektion-Titelliste "TVSTL", in "Kontakte App", ist es zusammengesetzt / sortiert nach peoples LastNames. Es sind die Abschnittsüberschriften auf der linken Seite des Bildschirms.
2. Liste: Indizierte Listen-Titel "ILT", normalerweise auf der rechten Seite des Bildschirms angezeigt, könnte es eine beliebige Gruppe von Indizes über Abschnitt-Header oben sein. Diese Liste wird vom Benutzer angetippt und funktioniert wie eine Bildlaufleiste.
DieiOS-Dokumentation ist nicht sehr klar über diese 2 Listen, weil "TVSTL" aktuelle Auflistung größer oder kleiner als "ILT" sein kann, gibt es keine Einschränkungen, welche Liste länger ist.
Und "Kontakte APP" ist ein schlechtes Beispiel, um diesen kritischen Punkt zu zeigen ... es sei denn, Sie haben nur sehr wenige Namen (sagen wir weniger als 10), oder wenn Sie chinesische Namen haben, die keine Titel haben , sind jedoch in Abschnitte unterteilt, und diese Abschnitte können NICHT indiziert werden.
Wenn diese beiden Listen nicht übereinstimmen, bietet "-tableView: sectionForIndexTitle: atIndex:" daher eine Lösung für die nächste Scroll-Bewegung von TableView.
Apples Dokument über das "Auffüllen einer indizierten Liste" erklärt seine vorgeschlagene Implementierung im Detail, aber es ist etwas umständlich (mit 4 For-Schleifen, 5 Arrays). Wenn Sie nicht möchten, dass "eine Tabellenansicht programmgesteuert erstellt wird", können Sie diesen Code überspringen, andernfalls sind sie in Listing 4-5, Listing 4-6, Listing 4-7, Listing 4-8, Listing 4-9 von Tabellenansicht Programmierhandbuch für iOS
Tags und Links iphone uitableview