82 Stimmen

iPhone UITableView. Wie schaltet man die alphabetische Liste mit nur einem Buchstaben wie in der Musik-App ein?

In der iPhone-Musik-App wird bei der Auswahl von Interpreten, Titeln oder Alben eine tableView mit einer vertikalen Liste von Einzelbuchstaben auf der rechten Seite der Benutzeroberfläche angezeigt, die einen schnellen Bildlauf ermöglicht. Wie kann ich diese Funktionalität in meiner App aktivieren?

Zum Wohl, Doug

3voto

Snowman Punkte 30417

Wenn Sie eine NSFetchedResultsController können Sie einfach tun:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return [frc sectionIndexTitles];
}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    return [frc sectionForSectionIndexTitle:title atIndex:index];
}

2voto

Alex Reynolds Punkte 93906

Implementieren Sie die Delegiertenmethoden -sectionIndexTitlesForTableView: y -tableView:sectionForSectionIndexTitle:atIndex:

Siehe die UITableViewDataSource Dokumentation für weitere Informationen.

2voto

Samah Punkte 1210

Hier ist eine einfache Lösung in Swift, vorausgesetzt, Sie haben Ihre Titelüberschriften in einem Array. Wenn der Titel nicht gefunden werden konnte, wird der vorherige Index im Array zurückgegeben.

func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? {
    return "ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters.flatMap{String($0)}
}

func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
    return self.headerTitles.filter{$0 <= title}.count - 1
}

0voto

benhorgen Punkte 1800

Wenn Sie MonoTouch verwenden, überschreiben Sie die Methode SectionIndexTitles(UITableView) in der Klasse UITableViewDataSource. Geben Sie einfach ein Array von Strings zurück und die Unterklasse kümmert sich um den Rest.

class TableViewDataSource : UITableViewDataSource
{
  public override string[] SectionIndexTitles(UITableView tableView) 
  { 
    return new string[] { /*your string values */};
  }
}

*nur ein Hinweis für diejenigen von uns, die C# und Mono (.NET) zum Schreiben von iPhone-Anwendungen verwenden :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X