我正在尝试从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'的值。
然而,上述情况引发了警告。有人可以帮忙吗?
感谢您花时间阅读。
答案 0 :(得分:0)
好的,我设法解决了这个问题。我的错误是将指针mainImage声明为NSString而不是UIImage。我这样做是因为在.plist中我使用的图像名称包含在一个字符串中。我意识到,当我在didSelectRowAtIndexPath方法中为同名的.png文件更改此字符串时,在我将其传递给mainImage时,它不再是我传递的字符串,它&# 39;是一张图片。排序!像我这样的新手很容易犯错误。以为我应该发帖,因为我确定我不会是唯一一个犯这个错误的人。