загрузить данные в подробно viewcontroller из plist? - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь отобразить данные из plist, который является массивом словарей:

<array>
    <dict>
        <key>title</key>
        <string>RATATOUILLE</string>
        <key>coverImage</key>
        <string>rat.png</string>
        <key>smallImage</key>
        <string>rat-small.png</string>
        <key>description</key>
        <string>Spray a pan with cooking spray. Brown the onion and the garlic (do not let garlic burn!). Add all the veggies and the bay leaf and simmer covered for 2 hours. Sprinkle on the breadcrumbs and cook another 5 minutes. Remove the bay leaf and serve.
5 servings, 0 POINTS each (if you eat the whole thing, count points for the bread crumbs)</string>
    </dict>

в контроллере rootview данные просто отлично отображаются в ячейках. В контроллере detailview я попробовал тот же метод, и он ничего не отображает. Что я делаю неправильно? Вот код:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSDictionary *details = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Testdata" ofType:@"plist"]];

    coverImageView.image = [UIImage imageNamed:[details objectForKey:@"coverImage"]];
    titleLabel.text = [details objectForKey:@"title"];
}

я не понимаю, как это работает на самом деле. В контроллере rootview у меня есть этот метод:

-(id)initWithCoder:(NSCoder *)aDecoder {

    if (self = [super initWithCoder:aDecoder]) {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"TestData" ofType:@"plist"];
        arrayIndex = [[NSArray alloc] initWithContentsOfFile:path];

    }
    return self;
}

и данные извлекаются из "arrayIndex". Разве это не то же самое для контроллера detailview? ................... Редактировать: Я разобрался, сделал строку в tableviewcontroller:

NSString *selectedItem = [arrayIndex objectAtIndex:indexPath.row];
detailViewController.selectedItem = selectedItem;

и загруженные данные в контроллере detailview так:

coverImageView.image = [UIImage imageNamed:[selectedItem valueForKey:@"coverImage"]];
    titleLabel.text = [selectedItem valueForKey:@"title"];

1 Ответ

0 голосов
/ 10 ноября 2011

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

...