Заполнение TableView построчно в Obj-C - PullRequest
0 голосов
/ 12 июня 2011

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

В идеале, я хотел бы иметь одну строку в первом столбце и соответствующий перевод во втором столбце (дляполучить четкое представление о содержимом).

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

Заранее спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 12 июня 2011

bbum правильно, вы не помещаете данные в таблицу, вы предоставляете их, и таблица отображает их. В пятницу я сделал быстрый макет размещения текстового файла, отображаемого построчно, так что, возможно, часть кода поможет некоторым.

Получите табличное представление, связанное с выходом к его источнику данных, тогда вы можете сделать что-то вроде этого:

// Class variable in your table delegate object
    NSArray* lineList;
    IBOutlet NSTableView* table;

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


- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    return [lineList objectAtIndex:row];
}

// Be sure to use the proper encoding for your text file
// do something like this to load your text file.
- (void) loadData:(NSString*)ourPath
{
    NSError* err = nil;
    NSString* fullFileText = [NSString stringWithContentsOfFile:ourPath encoding:NSMacOSRomanStringEncoding error:&err];
    if (err)
        NSLog(@"Err: %@, %d", [err localizedDescription], [err code]);

    if (fullFileText)
    {
        lineList = [[fullFileText componentsSeparatedByString:@"\n"] retain];
        [table reloadData];
    }
}

В вашем случае вы можете использовать массив словарей, используя разные ключи для обеих версий вашего текста. Таким образом, вы можете иметь две колонки. NSTableColumn сообщит вам, в какой столбец вы будете рисовать, когда вызывается tableView: objectValueForTableColumn:. Другой вариант, который у вас есть, это создание пользовательской ячейки с двумя полями, но это, вероятно, излишне для того, что вы просите.

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

Кроме того, для более динамичных сложных задач я обнаружил, что привязки лучше. Они могут сбивать с толку, если вам не удобно с ними, хотя. Для простых таблиц часто так просто идти по этому пути. Удачи!

3 голосов
/ 12 июня 2011

Вы не отправляете данные в табличное представление, оно извлекает данные из вас. Это можно сделать либо с помощью привязок, либо с помощью кислых данных табличного представления (которые немного отличаются, но в основном одинаковы для платформ NS * и UI *).

Документация NSTableView и UITableView содержит ссылки на примеры и руководства по программированию. Прочитайте их, и если вы все еще не понимаете, задайте конкретный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...