2009-06-26 3 views
1

Ich bin dabei, eine iPhone-Anwendung zu entwerfen und zu programmieren, um Filmzeiten anzuzeigen. Ich habe derzeit einen Film Klasse, die enthält:Wie erstellt man die Datenquelle für ein UITableView, um mit einem UISegmentedControl zu sortieren?

  • NSString title
  • NSSDate releaseDate
  • NSSDate score

Meine UI ist ein einfaches UINavigationController, die eine segmentierte Kontrolle hat, wie es Titel und UITableView die Filme angezeigt werden Setup im Interface Builder. Das segmentierte Steuerelement besteht aus drei Segmenten: Titel, Eröffnungsdatum und Ergebnis (auf RottenTomatoes). Die Daten für die Tabellenansicht werden derzeit von einer bereitgestellt, die eine Eigenschaft des AppDelegate ist.

Ich weiß, dass ich Aktionen Ziel registrieren können den folgenden Code verwenden, aber ich bin nicht sicher, wie die UITableView Daten an dieser Stelle sortieren:

[segmentedControl addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged]; 

Wie und wo greifen ich die UITableView, wenn die UISegmentedControl ausgewählte Segmentwechsel?

Antwort

1

Sie können die Daten auch mit einer der sortArrayUsing xxx-Methoden in NSArray sortieren.

1

Sie können eine Logik in die tableView:cellForRowAtPath:-Methode der Datenquelle einfügen, um den aktuellen Wert des UISegmentedControl zu überprüfen und die für jede Zeile zurückgegebene Zelle entsprechend zu ändern. Wenn sich dann der Wert der segmentierten Steuerung ändert, müssen Sie nur noch

aufrufen und fertig.

1

Ich habe ein Segment-Steuerelement, das Elemente auf drei verschiedene Arten bestellen/filtern kann - weil die Anzahl der Elemente abhängig von der Filter/Reihenfolge ist Ich verwende 3 verschiedene NSArray-Objekte, um die sortierten Listen zu halten.

Also, wenn ich die Daten laden, legte ich eine Version davon an der richtigen Stelle in jedem Array (oder nicht in dem Array, abhängig von dem Filter).

Ich habe einen Aufruf, um das Array zu erhalten, das den Status des segmentierten Steuerelements verwendet, um zu entscheiden, welches Array zurückgegeben werden soll.

Die Methode, die ein Array aufruft, wird anstelle eines normalen Arrays verwendet, und das bedeutet, dass ich nur etwas ändern muss, wenn ein segmentiertes Steuerelement geändert wird, rufen Sie [tableView reloadData] auf und alles ist für mich erledigt.