2013-03-08 25 views
7

OK, to jest moja sytuacja:Scroll NSTableView do wyboru

  • Mam NSMutableArray związaną z NSTableView, poprzez NSArrayController.
  • mam manipulowania wybór widoku stołu (wyzwalanie za pomocą klawiatury), stosując NSArrayController „s selectNext: i selectPrevious:

Chodzi o to: Wybór robi zmiany, ale widok tabeli nie wskaż obecny wybór, tak aby jego zawartość była widoczna.

Co należy zrobić? Jakieś pomysły?

Odpowiedz

16

Jest to metoda w NSTableView

- (void)scrollRowToVisible:(NSInteger)row; 

To będzie przejścia do określonej row.

+1

Dzięki za sugestię. Już próbowałem i działa. Jednak nadal istnieje pewien subtelny problem: a) mimo że robię '[myTableView scrollRowToVisible: [myTableView selectedRow]]' (zaraz po 'selectNext:' i 'selectPrevious:', to nie przewija do * current * linia, ale ta przed nim lub po niej (odpowiednio) b) nawet po '[myTableView scrollRowToVisible: [myTableView selectedRow] +1]' (po 'selectNext:'), it * does * show up, ale przewijanie jest *niegładki. (** HINT **: Widok tabeli jest * nie * w centrum uwagi). Dowolny pomysł? –

+1

Przepraszam za spóźnioną odpowiedź, faktycznie stworzyłem projekt do sprawdzenia, i zadziałało to dla mnie, ponieważ użyłem przycisku '- (IBAction): (id) nadawca { [self.array addObject: @" Anoop "]; [self.myTable reloadData]; [self.myTable scrollRowToVisible: self.array.count-1]; } ' –

+1

Miał ten sam problem co @ DrKameleon. Sądzę, że dzieje się tak, ponieważ po wywołaniu opcji 'selectPrevious' właściwości widoku nie ulegną natychmiastowej zmianie. Pomógł również wywołanie 'scrollRowToVisible' dla" later ". To nie jest ładne, ale jest mniej hack, aby złagodzić warunki wyścigu niż +/- 1: "DispatchQueue.main.async {tableView.scrollRowToVisible (tableView.selectedRow)}" – ctietze