1

私は iphone 開発の初心者であり、SDWebImage ライブラリをプロジェクトに実装しようとしています。私のプロジェクトは正常にビルドされますが、テーブルビューを表示すると、アプリが無効な引数の例外でクラッシュします。インストール手順に完全に従いました。ImageIO フレームワークを追加し、プロジェクトが非 ARC であるため -fobjc-arc フラグを追加し、適切なヘッダーをインポートしました。どんな助けでも大歓迎です。

私の例外

'NSInvalidArgumentException', reason: '-[UIImageView setImageWithURL:placeholderImage:]: unrecognized selector sent to instance 0x6e47d50'

マイコード

 // Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}

//Lazy Loader
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"mylogo.png"]];

// Configure the cell...

NSDictionary *aTweet = [tweets objectAtIndex:[indexPath row]];

cell.textLabel.text = [aTweet objectForKey:@"text"];
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.textLabel.font = [UIFont systemFontOfSize:12];
cell.textLabel.minimumFontSize = 10;
cell.textLabel.numberOfLines = 4;
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;

cell.detailTextLabel.text = [aTweet objectForKey:@"from_user"];

NSURL *url = [NSURL URLWithString:[aTweet objectForKey:@"profile_image_url"]];
NSData *data = [NSData dataWithContentsOfURL:url];
cell.imageView.image = [UIImage imageWithData:data];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
4

1 に答える 1

2

そのファイルの先頭に、SDWebImage ヘッダーを含めましたか。つまり:

#import <SDWebImage/UIImageView+WebCache.h>

(ココアポッドを使用している場合..そうでない場合:)

#import "SDWebImage/UIImageView+WebCache.h"

また

 #import "UIImageView+WebCache.h"

編集:

上部にこのコードがあるのはなぜですか:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"mylogo.png"]];

この設定を下部に再度設定すると、次のようになります。

NSURL *url = [NSURL URLWithString:[aTweet objectForKey:@"profile_image_url"]];
NSData *data = [NSData dataWithContentsOfURL:url];
cell.imageView.image = [UIImage imageWithData:data];

両方は必要ありません - おそらく、レイジーローダーを使用しない一番下のコードを削除しますか?

于 2013-03-07T00:30:07.070 に答える