1

私はしばらくの間、かなり単純な問題を解決しようとしていますが、成功していません。デバイスの Documents ディレクトリにファイルを保存し、後で Image View を使用してロードしようとしています。ファイルが実際に存在することを確認しました。画像が表示されないのはなぜですか?

よろしくお願いします。

ImageView に画像を読み込もうとしているコードは次のとおりです。

 -(void)loadFileFromDocumentFolder:(NSString *) filename
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *outputPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString: filename] ];

    NSLog(@"outputPath: %@", outputPath);
    UIImage *theImage = [UIImage new];
    [UIImage imageWithContentsOfFile:outputPath];

    if (theImage)
    {
        display = [UIImageView new];
        display = [display initWithImage:theImage];

        [self.view addSubview:display];
    }
}
4

2 に答える 2

3

コードに何か問題があります。

UIImage *theImage = [UIImage new];

この行では、新しいUIImageオブジェクトを作成しますが、何もしません。

[UIImage imageWithContentsOfFile:outputPath]

このクラス メソッドはUIImage、ファイルから読み込まれた画像を含むオブジェクトを返します。

で同じことを行いUIImageViewます。

NSString *outputPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString: filename] ];

また、すでに[NSString stringWithString: filename]文字列であるため不要な余分な文字列を作成する必要もありません。filename

コードは次のように動作するはずです。

 -(void)loadFileFromDocumentFolder:(NSString *) filename {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *outputPath = [documentsDirectory stringByAppendingPathComponent:filename ];

    NSLog(@"outputPath: %@", outputPath);
    UIImage *theImage = [UIImage imageWithContentsOfFile:outputPath];

    if (theImage) {
        display = [[UIImageView alloc] initWithImage:theImage];
        [self.view addSubview:display];
    }
}
于 2012-11-27T15:57:07.757 に答える
0

コードを次のように変更します。

UIImage *theImage = [UIImage imageWithContentsOfFile:outputPath];

if (theImage)
{
    display = [UIImageView alloc]  initWithImage:theImage];
}
于 2012-11-27T15:53:38.307 に答える