ios - 通过 Segue 将缓存图像传递到 DetailViewController

标签 ios objective-c uitableview uiimageview uistoryboardsegue

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

这是我为 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];

    }
}

我的代码出错

no known class method for selector objectAtIndex:

最后一行代码

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

我想要完成的事情是解决这个错误并传递上面通过 AFNetworking 下载的缓存图像,并在 segue 中传递该图像以显示在下一个 View Controller 中。谁能帮帮我?

最佳答案

查看您的代码,似乎您正在访问 UIImageView 上的 objectAtIndex: 方法,除非您有扩展 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;

    }
}

希望这有帮助。

关于ios - 通过 Segue 将缓存图像传递到 DetailViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39190676/

相关文章:

iphone - 如何使用MPMoviePlayerViewController播放youtube视频

objective-c - NSManagedObject 关系针对符合协议(protocol)的类

ios - 如何在 iOS 9.1 设​​备上运行 swift 1.2 代码?

ios - 带 wifi 的外部附件

ios - 申请进入应用商店后如何更改生产证书(.p12)

ios - 使 Core Data 中 API 的本地缓存数据失效

ios - AVAudioUnitSampler 错误 loadSoundBankAtURL -> 无法找到补丁 0 库 0x0/0

iphone - 从 UITableView pagingEnabled 获取可见单元格

ios - 没有在 RxSwift 上使用 RxMoya 获得 Completed 事件

uitableview - 您可以不使用 cellForRowAtIndexPath 方法来填充 UITableView 吗?