将图像数据传递给 imageview 时未获取所有图像

not getting all images when passing images data to imageview

我正在 detailviewcontroller 中将 xml 图片 url 解析为 imageview,但我通过 shareddelegate 传递了图片。但是当我点击 tableviewcelldetailviewcontroller.

中只有几张图片出现
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 方法中写了这段代码。

如果您在 属性 中将数据传递给 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 的推送转场,则不需要 tableView:didSelectRowAtIndexPath: 方法。给 segue 一个标识符(例如 "showDetail")。然后在 prepareForSegue 中,您传递必要的数据,如前所述。

您可以在 DetailViewController

中创建图像 属性

并且从tableview didSelectRowAtIndexPath 方法。调用 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];
    }
}