将图像数据传递给imageview

时间:2015-06-01 09:45:35

标签: ios objective-c xml uiimageview

我正在imageview中将xml图片网址解析为detailviewcontroller,但我通过shareddelegate传递了图片。但是当我点击tableviewcell时,只有少数图像出现在detailviewcontroller

imageview.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:sharedDelegate.imagObj]]];

我在detailviewcontroller

中写的上述代码
AppDelegate *sharedDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
sharedDelegate.imagObj = [Imagesarray objectAtIndex:indexPath.row];

我在tableview didselectrow方法中编写了此代码。

2 个答案:

答案 0 :(得分:2)

如果将数据传递给属性中的detailViewController,它将使您的代码更易于阅读和维护。

这将有助于detailViewController更加自包含,并限制它可以变异的内容。

向DetailViewController添加一个属性,以获取要传递的数据。听起来你想要传递一组图像URL,所以添加一个数组属性:

@property (nonatomic, strong) NSArray *images;

prepareForSegue:sender:中,将DetailViewController传递的图像设置为与所选行关联的值:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)__unused sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"])
    {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        DetailViewController *controller = (DetailViewController *)[segue destinationViewController];
        controller.images = ...;
    }
}

如果您在Storyboard中创建一个从tableViewCell到DetailViewController的推送segue,则不需要tableView:didSelectRowAtIndexPath:方法。给segue一个标识符(例如" showDetail")。然后在prepareForSegue中,您传递必要的数据,如上所述。

答案 1 :(得分:1)

您可以在DetailViewController

中创建图像属性

并从tableview中选择了ActionRowAtIndexPath方法。打电话给segue

[self performSegueWithIdentifier:@"DetailSegue" sender:indexpath];

并从

设置
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if ([[segue identifier] isEqualToString:@"DetailSegue"])
    {
        DetailViewController *dc = (DetailViewController *)[segue destinationViewController];

        dc.image = [imagesarray objectAtIndex:sender.row];
    }
}