2015-12-21 69 views
2

我在view中有一個NSTableview,當用戶選擇一個特定的row時,我想做一些其他的事情。我嘗試了tableViewSelectionDidChange方法,但它似乎不起作用。可可 - 如何使用tableViewSelectionDidChange:?

-(void)tableViewSelectionDidChange:(NSNotification *)notification 
{ 
    NSInteger row = [self.InfoTable selectedRow]; 

    if (row == -1) { 
     return; 
    }else{ 
     self.NumberInputTextField.stringValue = studentsInTable[row][0]; 
     self.NameInputTextField.stringValue = studentsInTable[row][1]; 
     self.ClassnumberInputTextField.stringValue = studentsInTable[row][1]; 
    } 
} 

,我有

@interface ViewController : NSViewController <NSTableViewDelegate,NSTableViewDataSource> 

self.InfoTable.dataSource = self; 
self.InfoTable.dataSource = self; 

而且,我GOOGLE了,但還沒有找到一個有用的答案。 任何人都可以給我一個提示嗎?

回答

1

- (void)tableViewSelectionDidChange:(NSNotification *)aNotification是委託方法,但您只是將dataSource設置爲self。

[self.InfoTable setDelegate:self]; 
+0

謝謝。我已經解決了這個問題,它工作得很好! –

0

如果你有這樣的需要爲基礎的觀點基於細胞的或NSTableView然後什麼。只要確保tableView的delegate設置爲控制器類,然後實現它們。

或者你可以做上面的代碼:

self.InfoTable.dataSource = self; 
self.InfoTable.delegate = self; //Note you used dataSource twice 

enter image description here

並確保您實現這些方法,如果你不這樣做綁定加載tableView

- (void)tableViewSelectionDidChange:(NSNotification *)notification{ 
    NSLog(@"Your seleceted a row..."); 
} 

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { 
    return [self.anArray count]; 
} 

- (id) tableView:(NSTableView *)TableView 
objectValueForTableColumn:(NSTableColumn *)tableColumn 
      row:(int)row { 

    return self.anArray[row]; 
} 
+1

非常感謝!其實我甚至沒有注意到我使用過兩次數據源。現在該方法正在工作! –