У меня есть это arquivo.plist
ниже.
Я посмотрел документацию Apple, но я не мог найти, как сделать просмотр списка, и я надеюсь, что кто-то может мне помочь.Как я могу отобразить несколько параметров одного и того же ключа из файла .plist в Objective-c?
В первом UITableView
, составляет список имен, присутствующих в arquivo.plist
, используя следующий код и загружающих следующий метод ниже.
Что я пытаюсь сделать: когда пользователь нажимает на имя tableView
, его переводят на второй экран с новым tableView
, который отобразит «рамки» этого пользователя.
Проблема в том, что код, который я использую для выбора «фреймов», - это тот же код, который я использую для перечисления имен на первом экране, но он не работает, потому что у каждого пользователя есть только одно имя , но он имеет несколько «фреймов».
Когда я пытаюсь реализовать это, я могу даже собрать массив с «рамками» и передать с помощью segue (я покажу массив с NSLog
), но этот массив не может быть отображен как tableView
для ошибки, которая Xcode дает мне:
* Нагрузочному приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [__ длина NSCFDictionary]: непризнанного селектор послал к экземпляру 0x8b87a60'
код из кулак (ViewController.m) находится ниже contatos.plist
Надеюсь, вы понимаете, что я пытаюсь сделать и принести мне свет! Спасибо всем!
скриншот .plist файла ниже:
http://img268.imageshack.us/img268/7356/jl26.png
Для справки и для вас, чтобы лучше понять проблему, когда пользователь нажимает на имя таблицы, массив генерируется с «FRAMS «этот пациент (у пациентов в среднем по 3 кадра каждый). Массив NSLog, что он должен быть передан на другую страницу и согласуется новая таблица генерирует следующий текст:
12/12/2013 16:10:13.513 rer [24251:70 b] (
{
1 = 11;
2 = 12;
3 = 13;
}
Я думаю, что это где проблема, так как этот метод массива не может быть реализована в TableView, так что я смотрю на свет лучшего способа установить этот массив и выберите FRAMS, когда я нажимаю пациент
так вот мой ViewController.m:
#import "ViewController.h"
#import "Contato.h"
#import "perfilViewController.h"
@interface ViewController()
-(void) loadContacts;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self loadContacts];
}
-(void) loadContacts
{
NSString *plistCaminho = [[NSBundle mainBundle] pathForResource:@"contatos"
ofType:@"plist"];
NSDictionary *pl = [NSDictionary dictionaryWithContentsOfFile:plistCaminho];
NSArray *dados = [pl valueForKey:@"contatos"];
contatos = [[NSMutableArray alloc] init];
for (NSDictionary *item in dados) {
NSString *nome = [item valueForKey:@"nome"];
NSString *telefone = [item valueForKey:@"telefone"];
NSString *fram = [item valueForKey:@"fram"];
Contato *c = [[Contato alloc] initWithNome:nome andTelefone:telefone andFram:fram];
[contatos addObject:c];
}
}
#pragma mark UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return contatos.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CelulaContatoCacheID = @"CelulaContatoCacheID";
UITableViewCell *cell = [self.tabelaContatos dequeueReusableCellWithIdentifier:CelulaContatoCacheID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CelulaContatoCacheID];
}
Contato *contato = [contatos objectAtIndex:indexPath.row];
cell.textLabel.text = contato.nome;
return cell;
}
#pragma mark -
#pragma mark UITableViewDelegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Contato *contato = [contatos objectAtIndex:indexPath.row];
NSString *msg = [NSString stringWithFormat:@"Fram:%@",contato.fram];
fran = [[NSMutableArray alloc] init];
fran = [NSMutableArray arrayWithObject:contato.telefone];
NSLog(@"finalmente eu consegui essa porra!!!%@", fran);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Contato"
message:msg
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[self.tabelaContatos deselectRowAtIndexPath:indexPath animated:YES];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"vai"]) {
NSIndexPath *indexPath = [self.tabelaContatos indexPathForSelectedRow];
perfilViewController *destViewController = segue.destinationViewController;
Contato *contato = [contatos objectAtIndex:indexPath.row];
fran = [[NSMutableArray alloc] init];
fran = [NSMutableArray arrayWithObject:contato.fram];
destViewController.frans = fran;
NSLog(@"%@%@", fran, destViewController.frans);
}
}
@end
Большое вам спасибо за ваш ответ. Я попробовал ваш sugestion, но все ячейки получили имя первого элемента в файле .plist. Почему это?? – user3093398
Я понял! это не indexPath.section. Нам нужно использовать indexPath.row! – user3093398
ЭТО РАБОТАЕТ !!! ВЫ НЕЗАВИСИМОЕ МАНННН !!! – user3093398