2012-04-02 9 views
1

テーブルビュー内のセルの画像をコードで設定しようとしています。メインバンドル(velser/Pictures)のフォルダのサブディレクトリにすべての画像があり、NSLog()は配列内のすべての画像を見ることができますが、アプリケーションはそれらを取得しません。以下のコードとクラッシュレポート:テーブルビューで画像を表示できません

@implementation STATableViewController 
@synthesize nameOfExercises = _nameOfExercises; 
@synthesize exercisePicture = _exercisePicture; 

- (void)viewDidLoad 
{ 
[super viewDidLoad];  

//will get the name of the files in the exercise folder 
_nameOfExercises = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Øvelser/Text"]error: nil]; 

_exercisePicture = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Øvelser/Pictures"]error: nil]; 

NSLog(@"%@", _nameOfExercises); 
NSLog(@"%@", _exercisePicture); 

}  

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return [_nameOfExercises count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 
//the extension is removed, before it's set to the labeltext 
NSString *cellValue = [[_nameOfExercises objectAtIndex:indexPath.row] stringByDeletingPathExtension]; 
cell.textLabel.text = cellValue; 
cell.imageView.image = [_exercisePicture objectAtIndex:indexPath.row]; 


return cell; 
} 

コンソール:

2012-04-02 14:31:58.324 STA[9665:11f03] (
"Fisketelefon.txt", 
"Krammebamse.txt", 
"Raketstart.txt" 
) 

2012-04-02 14:31:58.326 STA[9665:11f03] (
"Fisketelefon.jpg", 
"Krammebamse.jpg", 
"Raketstart.jpg" 
) 
2012-04-02 14:31:58.329 STA[9665:11f03] -[__NSCFString _isResizable]: unrecognized selector sent to instance 0x785d5e0 
2012-04-02 14:31:58.330 STA[9665:11f03] *** Terminating app due to uncaught exception  'NSInvalidArgumentException', reason: '-[__NSCFString _isResizable]: unrecognized selector sent to instance 0x785d5e0' 
*** First throw call stack: 
(0x14b7052 0x1a6bd0a 0x14b8ced 0x141df00 0x141dce2 0x4ed91b 0x3290 0x49de0f 0x49e589 0x489dfd 0x498851  0x443301 0x14b8e72 0xe792d 0xf1827 0x77fa7 0x79ea6 0x10530c 0x4034c6 0x403bd6 0x412743 0x4131f8 0x406aa9 0x23a4fa9 0x148b1c5 0x13f0022 0x13ee90a 0x13eddb4 0x13edccb 0x4032a7 0x404a9b 0x23f8 0x2355) 
terminate called throwing an exceptionwarning: Attempting to create USE_BLOCK_IN_FRAME variable with block  that isn't in the frame. 
warning: Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame. 
warning: Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame. 
warning: Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame. 

答えて

2

に役立ちます願っています。しかし、あなたがそこに格納しているのは、画像を保持するファイルの名前です。ファイル名を実際の画像に変更する必要があります。

NSString *pathPrefix = [[NSBundle mainBundle] bundlePath] 
    stringByAppendingPathComponent:@"Øvelser/Pictures"]; 
NSString *imageName = [_exercisePicture objectAtIndex:indexPath.row]; 
NSString *fullImagePath = [pathPrefix stringByAppendingPathComponent:imageName]; 
[[cell imageView] setImage:[UIImage imageWithContentsOfFile:fullImagePath]]; 
+0

アプリはもうクラッシュしませんが、画像は表示されません。私は_exercisePicturesの私の参照よりもフォルダに写真が入っていることを知っていますが、私はそれらの写真の名前だけを取得するのですか? –

+0

ああ、パス全体を 'initWithContentsOfFile:'初期化子に渡す必要があります。そうしないと、イメージをロードできなくなります。 – zoul

+0

あなたはそれが何を意味するのか分かりませんか? –

1

野生の推測:_exercisePicture

オブジェクトは文字列です。そして、あなたは文字列に画像を設定しよう:

cell.imageView.image = [_exercisePicture objectAtIndex:indexPath.row]; 

_exercisePicture内のオブジェクトが画像であることを確認してください。

は、それはあなたがimageView.imageプロパティに画像(UIImageクラスのインスタンス)を割り当てることになっている

関連する問題