从plist语法问题中读取图像名称?

时间:2011-07-30 00:20:57

标签: xcode uitableview uiimageview plist

我正在尝试从plist中读取对图像文件的引用,并使图像显示在详细视图中。虽然我可以为我的表视图布局执行此操作,但我在使用DetailViewController nib文件时遇到此问题。我希望有人可以帮我解决问题并向我解释我哪里出错了。接下来的代码就是我对我正在做的事情的解释。如果你能向我解释我做错了什么,就像告诉我应该做什么一样,我真的很感激。我正在努力学习,尽量让事情发挥作用。

我认为这个问题存在于两个地方。第一个是我的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引用的缩略图。

在上面的代码中,mainImage指的是我尝试通过我的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文件中包含的键'thumb'的值。

然而,上述情况引发了警告。有人可以帮忙吗?

感谢您花时间阅读。

1 个答案:

答案 0 :(得分:0)

好的,我设法解决了这个问题。我的错误是将指针mainImage声明为NSString而不是UIImage。我这样做是因为在.plist中我使用的图像名称包含在一个字符串中。我意识到,当我在didSelectRowAtIndexPath方法中为同名的.png文件更改此字符串时,在我将其传递给mainImage时,它不再是我传递的字符串,它&# 39;是一张图片。排序!像我这样的新手很容易犯错误。以为我应该发帖,因为我确定我不会是唯一一个犯这个错误的人。