NSURL → NSImage → NSImageView - PullRequest
       9

NSURL → NSImage → NSImageView

5 голосов
/ 15 декабря 2010

Я играю с AppKit и NSDocument, и я не знаю, почему это не работает?:

Я только что написал это, и изображение не ноль, но никогда не загружает изображение, его размер всегда равен нулю. Это правильный метод, который я должен реализовать для чтения файлов в мой документ? Мне нужен путь, а не данные (NSData), потому что я планирую использовать другую библиотеку для чтения других файлов.

Сейчас я пытаюсь читать PNG, JPG, но ничего не получалось. ; (

- (BOOL) readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError{

    NSImage *image = nil;
    image = [[NSImage alloc] initWithContentsOfURL:url];

    [imageView setImage:image];
    [image release];

    if ( outError != NULL ) {
        *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
    }
    return YES;
}

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 16 декабря 2010

Если imageView загружается из файла NIB, он не будет установлен при вызове readFromURL: ofType: error:. Вместо этого вы должны загрузить изображение и сохранить его в переменной экземпляра, а затем добавить его в imageView в windowControllerDidLoadNib: метод. Кроме того, вы возвращаете ошибку каждый раз, в то время как вы должны возвращать ошибку, только если что-то идет не так.

- (void)windowControllerDidLoadNib:(NSWindowController *)windowController {
    [imageView setImage:image];
    [image release];
    image = nil;
}
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
    image = [[NSImage alloc] initWithContentsOfURL:url];
    if(!image) {
        if(outError) *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
        return NO;
    }
    return YES;
}

Просто убедитесь, что вы добавили изображение NSImage *; Переменная экземпляра в ваш заголовочный файл.

6 голосов
/ 15 декабря 2010

Сделайте так:

NSImage *image = [[NSImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...