Заполнение двух NSTableViews из двух разных NSMutableArrays в одном классе - PullRequest
0 голосов
/ 28 мая 2011

У меня возникли проблемы с заполнением двух TableView данными из двух разных MutableArrays в одном классе. Я анализирую документ * .xml и хочу поместить данные в разные таблицы. В главе «Использование источника данных таблицы» «Руководства по программированию табличного представления» говорится: «Объект источника данных, который управляет несколькими наборами данных, может выбрать соответствующий набор, на основании которого объект NSTableView отправил сообщение». Я понимаю, что это означает, что я могу заполнить два разных табличных представления из двух разных изменяемых массивов в одном классе. Кажется, я не могу понять, как это сделать, так как я не могу найти больше информации, кроме той, что цитировалась выше.

Мой код населением таблицы:

- (int)numberOfRowsInTableView:aTableView {  
    return [arrayPowerData count];  
}

- (id)tableView:aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row {  
    PowerData* dataPower = [arrayPowerData objectAtIndex:row];
    return [dataPower valueForKey:[aTableColumn identifier]];  
}

Я знаю, что в обоих массивах есть данные, потому что я могу переключить переменную массива в приведенном выше коде, и она заполнит соответствующий табличный вид.

[blockTableView reloadData];  
[dataTableView reloadData];

Я пробовал маршрут Array Controller / Bindings, но TableViews не заполняются, даже если я не получаю никаких сообщений об ошибках или предупреждений.

Я новичок в программировании на Какао / Objective-c, и совсем не программист, поэтому любая помощь и / или руководство будут очень благодарны.

1 Ответ

2 голосов
/ 29 мая 2011

По сути, здесь происходит то, что обе таблицы вызывают эти функции при заполнении. Когда это происходит, они передают себя в качестве параметра табличного представления aTableView. Таким образом, чтобы заполнить оба, используя одни и те же методы, вам необходимо отфильтровать, какое табличное представление в данный момент вызывает метод. Вот основная идея:

- (int)numberOfRowsInTableView:aTableView {  
    if (aTableView == tableview1) {
        return [array1 count];
    }
    else if (aTableView == tableview2) {
        return [array2 count];
    }  
}

-(id)tableView:aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row {  
    if (aTableView == tableview1) {
        //populate tableview1 with the corresponding array
    }
    else if (aTableView == tableview2) {
        //populate tableview2 with the other array
    }
}
...