Frage

Ich habe einen kleinen Kakao app, und die Benutzeroberfläche besteht im Wesentlichen aus einem einzigen NSTableView. Allerdings habe ich zwei verschiedene Listen von Daten, dass ich in sie angezeigt werden möchte, und dann nur Umschalten zwischen den beiden. Meine Frage ist, was denken Sie ist der beste Weg, um diese zu implementieren?

Nun überleg ich, dass ich einen BOOL-Flag auf Änderung verwenden könnte, die Array in der Datenquelle Methoden verwendet wird. Aber ich müsste auch die NSCell Klasse ändern, die verwendet wird, da die Listen vollständig unterschiedliche Datenobjekte enthalten. Dann würde ich brauche die Tabelle (würde [Tabelle reload] Reload all dies zuverlässig?) Neu zu laden.

Oder ich 2 separaten NSTableViews in meiner NIB-Datei erstellen könnte und Knebel ihre Sichtbarkeit ... Aber das scheint hackish.

Ich habe eine ziemlich gut von Cocoa zu verstehen, aber ich bin nicht wirklich sicher, wie für so etwas zu suchen, und ich bin gespannt, wie andere erfahrene Entwickler dieses Problem lösen würden.

Danke.

War es hilfreich?

Lösung

  

Oder ich 2 separaten NSTableViews in meiner NIB-Datei erstellen könnte und Knebel ihre Sichtbarkeit ... Aber das scheint hackish.

Es ist nicht überhaupt hackish. Es ist hackish die gleiche Tabellenansicht für mehrere Sätze von unterschiedlichen Daten zu verwenden.

Nur eine Tabless NSTabView mit zwei Registerkarten erstellen, legte eine NSTableView in den ersten Registerkarte und anderen NSTableView in dem zweiten Registerkarte. Sie können dann zwischen dem Tabellenansichten wechseln, indem -selectTabViewItemAtIndex: auf der NSTabView aufrufen.

Andere Tipps

Warum nicht getrennte Implementierungen von UITableViewDataSource und UITableViewDelegate und ändern, die diejenigen, die UITableView Punkte zu, wenn das Toggle-Ereignis eintritt? Scheint, wie es viel sauberer als wenn alle, dass bedingten Code in einer Implementierung sein würde. Nur weil die meisten Beispiele der UITableViewController Umsetzung dieser beiden Protokolle zeigen, bedeutet nicht, dass sie nicht drei separate Objekte sein können.

Sixten Ottos Antwort ist die richtige. Das heißt, wenn ich nur hacken zusammen etwas wollte, das funktioniert, ich so etwas tun könnte:

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  if (dataSourceOne) {
    [self cellForRowAtIndexPathDS1:indexPath];
  }
  else {
    [self cellForRowAtIndexPathDS2:indexPath];
  }
}

und implementieren dann zwei Versionen von cellForRowAtIndexPath. Ich bin mir ziemlich sicher, dass die Nachladedaten Methode wird alles auf dem Bildschirm neu zu laden.

hackish, aber praktikabel ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top