2013-03-08 22 views
7

OK, das ist meine Situation:Scroll NSTableView zur Auswahl

  • ich eine NSMutableArray haben zu einem NSTableView gebunden, über eine NSArrayController.
  • Ich Manipulation der Auswahl des Tabellenansicht (Trigger per Tastatur), NSArrayController ‚s selectNext: und selectPrevious:

mit Die Sache ist die: Die Auswahl Änderung der Fall ist, aber die Tabellenansicht bewegen sich nicht auf die aktuelle Auswahl, so dass ihr Inhalt sichtbar ist.

Was soll ich tun? Irgendwelche Ideen?

Antwort

16

Es gibt ein Verfahren in NSTableView

- (void)scrollRowToVisible:(NSInteger)row; 

, die die angegebenen row scrollt.

+1

Danke für den Vorschlag. Ich habe es schon ausprobiert und es funktioniert. Allerdings gibt es immer noch einige subtile Probleme: a) obwohl ich '[myTableView scrollRowToVisible: [myTableView selectedRow]]' '(direkt nach' selectNext: 'und' selectPrevious: ', scrollt es nicht zum * aktuellen * Zeile, aber die entweder vor oder nach ihr (b) selbst nach einem '[myTableView scrollRowToVisible: [myTableView selectedRow] +1]' (nach 'selectNext:'), * wird * angezeigt, aber scrollen ist *Nicht weich. (** TIPP **: Die Tabellenansicht ist * nicht * im Fokus). Irgendeine Idee? –

+1

Sorry für die späte Antwort, eigentlich habe ich ein Projekt zu überprüfen, und es funktionierte für mich, als ich '- (IBAction) -Taste: (ID) Absender { [self.array addObject: @" Anoop "]; [self.myTable reloadData]; [self.myTable scrollRowToVisible: self.array.count-1]; } ' –

+1

Hatte das gleiche Problem wie @ Dr.Kameleon. Ich nehme an, das liegt daran, dass beim Aufruf von 'selectPrevious' die Eigenschaften der Ansicht nicht sofort geändert werden. Das Verschieben von 'scrollRowToVisible' für" später "half ebenfalls. Es ist nicht schön, aber es ist weniger ein Hack, um die Rassenbedingungen zu mildern als +/- 1: 'DispatchQueue.main.async {tableView.scrollRowToVisible (tableView.selectedRow)}' – ctietze