Как передать данные из секционного представления таблицы в подробный вид? - PullRequest
0 голосов
/ 29 марта 2011

Я недавно загрузил секционное представление таблицы Джеффа Ламарша, и я пытаюсь реализовать детальное представление.Проблема в том, что я не знаю, что поставить на didDelectRow и viewDidLoad из detailView.m.Я использую список для этого.

Вот так настроено мое представление таблицы: Код:

//SectionsViewController.h

    NSDictionary *allNames;
    NSMutableDictionary *names;
    NSMutableArray       *keys;

//SectionsViewController.m
- (void)viewDidLoad {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames" ofType:@"plist"];
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    self.allNames = dict; [dict release]; }

//on cellForRowAtIndexPath:

        NSInteger section = [indexPath section];
    NSInteger row = [indexPath row];

    NSString *key = [keys objectAtIndex:section];   
    NSArray *nameSection = [names objectForKey:key];

    NSDictionary *dictionary = [nameSection objectAtIndex:row];

        cell.textLabel.text =  [dictionary objectForKey:@"Title"] ;

       return cell;

//on didSelectRowAtIndexPath

       NSString *selectedItem =[[nameSection objectAtIndex:row] objectForKey:@"Title"];

       Detail *dvController = [[Detail alloc] initWithNibName:@"Detail" bundle:[NSBundle mainBundle]];
        [self.navigationController pushViewController:dvController animated:YES];

    dvController.selectedItem = selectedItem;

    [dvController release];
    dvController = nil;
    NSLog(@"teste1");


//Detail.m

NSDictionary *details = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"sortednames" ofType:@"plist"]];

details = [details objectForKey:self.selectedItem];

titleLabel.text = [selectedItem objectForKey:@"Title"];
descriptionLabel.text = [selectedItem objectForKey:@"description"];

Мой список выглядит следующим образом: Код:

<dict>
    <key>3 jan</key>
    <array>
        <dict>
            <key>Title</key>
            <string>asdf</string>
            <key>description</key>
            <string>asdqqq</string>
        </dict>
    </array>
    <key>4 Jan</key>
    <array>
        <dict>
            <key>Title</key>
            <string>asddww</string>
            <key>description</key>
            <string>asdd</string>
        </dict>
    </array>
</dict>
</plist>

Кто-нибудь знает, что я делаю не так?любая помощь приветствуется!

Спасибо !!!

1 Ответ

1 голос
/ 29 марта 2011

Вам понадобится способ передачи деталей вашему контроллеру деталей.Пара опций использует свойство или пользовательский инициализатор.

//Detail.h
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle details:(NSString*)details;
    //And/or
@property(copy) NSString *details;

Исходный код

//on didSelectRowAtIndexPath
NSString *selectedItem =[[nameSection objectAtIndex:row] objectForKey:@"Title"];
Detail *dvController = [[Detail alloc] initWithNibName:@"Detail" bundle:[NSBundle mainBundle]];
dvController.details = selectedItem;
[self.navigationController pushViewController:dvController animated:YES];

Редактировать

Возможно, у вас есть другиепроблемы, и одна из них может заключаться в том, что вы пытаетесь получить objectForKey:, используя @ "Title", и это неверно, если вы еще не сверлили с датами.Ваш PLIST - это словарь массивов словарей.Вот пример доступа к значению из вашего массива.

NSArray *values = [dictionary objectForKey:@"3 Jan"];
NSDictionary *anyValue = [values lastObject];
NSString *title = [anyValue objectForKey:@"Title"];
NSString *description = [anyValue objectForKey:@"description"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...