2011-07-30 4 views
0

Я пытаюсь прочитать ссылку на файл изображения из plist и сделать отображение изображения в подробном представлении. хотя я могу сделать это для своего макета таблицы, у меня возникают проблемы с моим файлом nib DetailViewController. Я надеюсь, что кто-то может помочь мне исправить проблему и объяснить мне, где я ошибаюсь. Следующее с кодом - это мое объяснение того, что я ДУМАЮ, что я делаю. Если бы вы могли объяснить мне, что я делаю не так, как показать мне, что я должен делать, я бы очень признателен. Я пытаюсь учиться так же, как пытаюсь заставить все работать.Прочитать имя изображения из проблемы синтаксиса plist?

Я думаю, что проблема заключается в двух местах. Первый мой didSelectRowAtIndexPath метод:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //Get the dictionary of the selected data source. 
    NSDictionary *dictionary = [[[self.localSites objectAtIndex:indexPath.section]objectForKey:@"rowData"] objectAtIndex:indexPath.row]; 

    TableDetailViewController *controller = [[TableDetailViewController alloc] initWithNibName:@"TableDetailViewController" bundle:[NSBundle mainBundle]]; 

    controller.title = [dictionary objectForKey:@"Location"]; 
    controller.dText = [dictionary objectForKey:@"details"]; 

    // THIS IS WHERE THE PROBLEM IS 
    NSString *tiny = [dictionary objectForKey:@"thumb"]; 
    controller.mainImage = [UIImage imageNamed:tiny]; 

    [self.navigationController pushViewController:controller animated:YES]; 

    [controller release]; 
} 

В коде выше отмечено //THIS IS WHERE I THINK THE PROBLEM IS, что я пытаюсь сделать, это взять ссылку на изображение, содержащиеся в строке в PLIST и использовать ссылку, чтобы получить изображение. Этот подход отлично работает в моем методе cellForRowAtIndexPath, где я использую его, чтобы заполнить левую сторону таблицы эскизами, указанными на моем plist.

В приведенном выше коде относится к строке я попытался подключиться к UIImageView розетке в моей TableDetailViewController.xib через мой TableDetailViewController.m файл, как показано ниже. Здесь я думаю, что проблема номер два:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewDidLoad]; 

    //This Bit says that the text contained in UITextView blurb is the string dText, which is used in my didSelectRowAtIndex method 
    blurb.text = dText; 

    //This is where I try to do the same thing by saying that UIImageView topImage is the NSString mainImage which I use in my didSelectRowAtIndex method 
    topImage.image = mainImage;  
} 

Моя логика в том, что topImage является UIImageView и mainImage является строка, содержащая представление изображения, которое в моем методе didSelectRowAtIndex я прохожу значение ключа «пальца», содержащийся в моем файле plist.

Однако вышеуказанное предупреждает. Может ли кто-нибудь помочь?

Спасибо, что нашли время для чтения.

+0

woukd вам нравится больше объяснять, как вы его решаете? или опубликовать пример вашего кода? – Albert

+0

Альберт, код как указано выше. В файле заголовка TableDetailViewController.h вместо написания NSString * mainImage пишу UIIMage * mainImage. Это простое изменение по причинам, описанным ниже. Остальная часть приведенного выше кода верна. –

ответ

0

Хорошо, мне это удалось. Моя ошибка заключалась в том, чтобы объявить указатель mainImage как NSString, а не как UIImage. Я сделал это, потому что в .plist я использую имя изображения, содержащегося внутри строки. Я понял, что, изменив эту строку для .png-файла с тем же именем в моем методе didSelectRowAtIndexPath, к тому времени, когда я передаю его mainImage, это уже не строка, которую я передаю, это изображение. Сортировка! Легкая ошибка для новичка, подобного мне. Думал, что я должен опубликовать сообщение, поскольку я уверен, что я не буду единственным, кто совершит эту ошибку.

Смежные вопросы