通过Segue将缓存图像传递给DetailViewController

时间:2016-08-28 11:13:29

标签: ios objective-c uitableview uiimageview uistoryboardsegue

我正在使用数据任务通过JSON文件显示来自外部服务器的文本数据。哪个工作得很好 我正在使用AFNetworking的文件#import "UIImageView+AFNetworking.h"从Tableview的Cell声明中的上面提取的数据中下载图像,它也工作得很好。 但是当选择一行将选定的行图像通过Segue传递给另一个视图控制器时,它会给出错误,

这是我对Tableview的单元格的代码,这是非常好的&显示文字和文字图像数据

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"maincell" forIndexPath:indexPath];

    Categories * CategoryObject;
    CategoryObject = [categoryArray objectAtIndex:indexPath.row];
    cell.textLabel.text = CategoryObject.categoryTitle;

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    // Configure the cell Image...

    NSURL *url = [NSURL URLWithString:CategoryObject.categoryImage];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    UIImage *placeholderImage = [UIImage imageNamed:@"placeholder"];
    __weak UITableViewCell *weakCell = cell;
    [cell.imageView setImageWithURLRequest:request placeholderImage:placeholderImage success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
        weakCell.imageView.image = image;
        [weakCell setNeedsLayout];
    } failure:nil];

    return cell;   
}

现在看一下给出错误的Segue代码

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"showAnotherView"]) {

        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
       DetailImageViewController *destViewController = segue.destinationViewController;
        destViewController.imageName = [ UIImageView objectAtIndex:indexPath.row.image];

    }
}

我的代码给出了错误

  

选择器objectAtIndex:

没有已知的类方法

在代码的最后一行

destViewController.imageName = [ UIImageView objectAtIndex:indexPath.row.image];

我想要完成的是解决此错误并传递上面通过AFNetworking下载的缓存图像,并将该图像传递给segue以显示在下一个视图控制器中。谁能帮助我?

1 个答案:

答案 0 :(得分:1)

查看您的代码,您似乎正在访问objectAtIndex:上没有该方法的UIImageView方法,除非您有类别类扩展UIImageView。如果你要处理原始选择,它应该是这样的,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([segue.identifier isEqualToString:@"showAnotherView"]) 
    {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        UITableViewCell * cell = [self.tableView cellForRowAtIndexPath:indexPath];
        DetailImageViewController *destViewController = segue.destinationViewController;
        destViewController.imageName = Cell.imageView.image;

    }
}

希望得到这个帮助。