iPad AQGridView не показывает мои UIImages не в комплекте - PullRequest
0 голосов
/ 16 марта 2011

Я использую шаблон ImageDemo, и он прекрасно работает, если я кодирую изображение из пакета, но когда я пытаюсь загрузить его из созданных в приложении каталогов, мне не везет.

Код:

    - (AQGridViewCell *) gridView: (AQGridView *) aGridView cellForItemAtIndex: (NSUInteger) index
    {
        static NSString * PlainCellIdentifier = @"PlainCellIdentifier";

        AQGridViewCell * cell = nil;
        ImageDemoGridViewCell * plainCell = (ImageDemoGridViewCell *)[aGridView dequeueReusableCellWithIdentifier: PlainCellIdentifier];
        if ( plainCell == nil )
        {
            plainCell = [[[ImageDemoGridViewCell alloc] initWithFrame: CGRectMake(0.0, 0.0, 200.0, 150.0)
                                                      reuseIdentifier: PlainCellIdentifier] autorelease];
            plainCell.selectionGlowColor = [UIColor lightGrayColor];
        }
        NSString *fileName = [NSString stringWithFormat:@"%@/%@_tn.jpg",[manufacturerID stringValue], [[[self.collectionItems objectAtIndex:index] valueForKey:@"PhotoName"]  stringByReplacingOccurrencesOfString:@" " withString:@"%20"]];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsPath = [paths objectAtIndex:0];
        NSString *savePath =[documentsPath stringByAppendingPathComponent:fileName] ;
        NSData *imageData = nil;
        BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:savePath];
        if (fileExists) {
            imageData = [NSData dataWithContentsOfFile:savePath];

        } else {
            NSString *filePath = [[NSBundle mainBundle] pathForResource:@"NoImageAvailableThumbNail" ofType:@"png"];
            imageData = [NSData dataWithContentsOfFile:filePath];   
        }

UIImage *myImage = [UIImage imageWithData:imageData];
    NSLog(@"%@", myImage);
    if (myImage==nil) {
        NSLog(@"NO IMAGE");
    }
    plainCell.image = myImage;      

        cell = plainCell;

        return ( cell );
    }

Я использую код для извлечения данных изображения, которые, как я знаю, работает, потому что я использую их в других местах в моем приложении, и я проверяю на ноль, когда я устанавливаю свойство в AQGridViewCell:

- (void) setImage: (UIImage *) anImage
{
    _imageView.image = anImage;
    [self setNeedsLayout];
}

1 Ответ

1 голос
/ 16 марта 2011

Я не вижу в вашем примере проверки на нулевое UIImage.Вы уверены, что он загружается правильно?Попробуйте создать изображение в одной строке и установить его в другой, чтобы увидеть, как оно создается в отладчике.Для справки, я делаю нечто подобное с кэшированными изображениями обложек книг в приложении Kobo, и это работает.Одно из отличий заключается в том, что я использую методы C для загрузки UIImage из файла PNG.Что-то вроде UIImageFromPNGData (), с моей головы (сейчас я прошу прощения, отвечая на iPhone).

Единственное, что я могу подумать, это проверить, скрыт ли вид изображения по какой-то причине.Распечатав его в отладчике, вы должны сказать, что вместе с размером, расположением и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...