В моем приложении у меня есть контроллер табличного представления, который строит таблицу с разделами из файла .plist. Каждая ячейка уникальна, поскольку она основана на параметре идентификатора, который хранится для каждого элемента в файле plist и не может повторяться. В качестве примера: PLISTКак я могу получить NSIndexPath (для UITableCell) текстовыми данными ячейки?
<dict>
<key>Section One</key>
<dict>
<key>Item 0</key>
<dict>
<key>name</key>
<string>Some name one</string>
<key>picfile</key>
<string>take8.png</string>
<key>takeItemId</key>
<integer>101</integer>
</dict>
<key>Item 1</key>
<dict>
...
</dict>
</dict>
<key>Section Two</key>
<dict>
<key>Item 0</key>
<dict>
<key>name</key>
<string>Some name two</string>
<key>picfile</key>
<string>take6.png</string>
<key>takeItemId</key>
<integer>103</integer>
</dict>
<key>Item 1</key>....
Так моя таблица состоит из ячеек, содержащих текстовую метку (takeItemID), изображение из файла и другой текстовой метки (Name). Теперь у меня есть событие, которое приносит идентификатор в виде строки (я получаю команды от подключения сокета tcp). И я хочу, чтобы моя таблица выделила (изменить фон) в тех ячейках, которые содержат полученную строку идентификатора в качестве соответствующей текстовой метки. Получение NSIndexPath каким-то образом из plist было бы также хорошо.
Edit: здесь ниже мой TableView: cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
NSString *sGroup = [sequencerGroups objectAtIndex:section];
NSDictionary *tSection = [sequencer objectForKey:sGroup];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SecuencerCell"];
NSString *takeItemName = [[[tSection allKeys] sortedArrayUsingSelector:@selector(compare:)] objectAtIndex:row];
NSDictionary *takeItem = [tSection objectForKey:takeItemName];
UILabel *idLabel = (UILabel *)[cell viewWithTag:104];
idLabel.text = [NSString stringWithFormat:@"%@",[takeItem valueForKey:@"takeItemId"]];
UILabel *nameLabel = (UILabel *)[cell viewWithTag:102];
nameLabel.text = [takeItem valueForKey:@"name"];
UIButton *piconButton = (UIButton *)[cell viewWithTag:101];
UIImage *TakeImage = [UIImage imageNamed:[takeItem valueForKey:@"picfile"]];
[piconButton setBackgroundImage:TakeImage forState:UIControlStateNormal];
UIButton *resumeButton = (UIButton *)[cell viewWithTag:103];
UIImage *resumeImage = [UIImage imageNamed:@"resume.png"];
[resumeButton setBackgroundImage:resumeImage forState:UIControlStateNormal];
return cell;
}
Edit: вот где sequencerGroups и секвенсор взяты из:
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Sequencer.plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
self.sequencer = dict;
[dict release];
NSArray *array = [sequencer allKeys];
self.sequencerGroups = array;
спасибо, Максим
Tis может помочь вам http://borkware.com/quickies/one? topic = UITableView – fibnochi
Не могли бы вы включить код для вашего 'tableView: cellForRowAtIndexPath:'? – dasblinkenlight