2016-08-28 10 views
0

データタスクを使用して、外部サーバーからのテキストデータをJSONファイル経由で表示しています。 かなりうまく動作しており、AFNetworkingのファイル#import "UIImageView+AFNetworking.h"を使用して、上の画像をTableviewのCell宣言で抽出した画像からダウンロードしています。 しかし、それはエラーを与えて別のビューコントローラにセグエを経由して、選択した行イメージを渡すために、行を選択するときに、ここでSegue経由のキャッシュイメージをDetailViewControllerに渡す

は今&画像データ

- (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; 
} 

&表示原文かなり細かいですテーブルビューのセルのために私のコードですエラーに

- (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を介して、その画像を次のView Controllerに表示するためにSegueで渡します。誰か助けてくれますか?

+0

'objectAtIndex'は配列に対して機能します。 'UIImageView'は配列ではありません。 'indexPath.row'は数字です。数値には「イメージ」プロパティはありません。言い換えれば、そのコード行は間違っているため、アクセスするはずの値はわかりません。 –

+0

@philiip Mills、そうです、私はここでコードのこの行でどの値を渡すべきかを知る必要がありますが、上のAFNetworkingコードで画像を抽出しました。コメント '//セルのイメージを設定する... 'で宣言したところ –

答えて

1

コードを見ると、UIImageViewを拡張するカテゴリクラスを持たない限り、UIImageViewobjectAtIndex:メソッドにアクセスしているようです。生の選択を処理する場合は、このようなものにする必要があります。

- (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; 

    } 
} 

このヘルプが必要です。

+0

はクリアできません。あなたの提案したコードで問題を解決してください。 –

+1

あなたのコードは完璧にフィットしますが、コンパイラが私にそれを変更するためのヒントを与えてくれた小さな間違いがあります。それは最後の行の 'Cell.imageView.image;'にあります。 'cell.imageView.image;は' cell'の大文字 'c'の代わりに小さな' c'があります。 ありがとう、私のアプリの主要な問題を解決しました。 –

関連する問題