2012-04-17 6 views
0

Если у меня есть отношение от одного до многих, как бы я мог заселить NSTableView такими данными, которые находятся в NSArray?Заполнение NSTableView из нескольких записей NSArray за один раз

Скажем, у меня есть элемент данных, который называется «Алфавит», и я хочу, чтобы, когда пользователь выбирает его из списка, возвращаемое значение (s) в:

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 

являются буквы алфавита в разных строках, один под другим.

Можно ли это сделать? Спасибо!

+0

Я пытался вызвать метод выше, непосредственно в цикле и передавая счетчик цикла в качестве параметра RowIndex выше .. Я не уверен, что я должен назвать метод (хотя и не работает), так как я думаю, что это задание [tableName reloadData]; – Kevin

+0

Я также попытался вернуть массив сам, но я получаю только «(» в первой строке в результате. – Kevin

+0

Вам нужно прочитать [Руководство по программированию таблиц] (https://developer.apple.com /library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html), потому что на данный момент вы просто гадаете. –

ответ

2

Вам нужно либо присвоить объект как вид таблицы datasource и есть, что объект соответствует протоколу NSTableViewDataSource, или вам нужно использовать NSArrayController и какао привязок.

Если вы используете источник данных, выполните метод numberOfItemsInTableView: и верните count вашего массива. Кроме того, необходимо реализовать -tableView:objectValueForTableColumn:row::

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 
{ 
    if(rowIndex > -1) 
    { 
     return [yourArray objectAtIndex:rowIndex]; 
    } 
    return nil; 
} 
+0

Должно ли это быть rowIndex вместо строки в выражении if? – Kevin

+0

Проблема с приведенным выше кодом заключается в том, что (строка> -1) никогда не возвращается правда, даже ты gh numberOfItemsInTableView: возвращает счетчик массива (1000+). Поэтому я получаю 1000+ записей одного и того же значения. – Kevin

+0

Да, это должно быть 'rowIndex', это была опечатка. Исправлена. Можете ли вы разместить свой код? –

Смежные вопросы