NSImageView не работает?


Я пытаюсь поместить изображение в представление. Вот мой код:

NSImageView *imView = [[NSImageView alloc] initWithFrame:NSMakeRect(0, 0, 480, 360)];
    NSImage *myImage = [[NSImage alloc] initByReferencingFile:@"image.png"];
    [imView setImage:myImage];
    [theView addSubview:imView];
    [window setContentView:theView];

Но окно пусто(изображение не рисуется). Например, если я помещаю текстовое поле в представление.. он работает отлично, но не NSImageView...Я проверил консоль, и там нет предупреждений/сообщений об ошибках... Спасибо!

1 3

1 ответ:

Поскольку [imView isValid] возвращает false, это означает, что NSImage не удалось создать изображение на основе этого файла. Распространенной причиной является то, что файл не может быть найден. Из документации -initByReferencingFile:,

имя файла Полное или относительное имя пути, указывающее файл с требуемыми данными изображения. Относительные пути должны быть относительно текущего рабочего каталога.

Это означает, что поведение -initByReferencingFile: зависит от текущего каталога, и в идеале вы следует передать полное имя пути.

Лучшим решением является использование +imageNamed: вместо этого по двум причинам: он использует кэш изображений и может искать файл внутри пакета приложений.