отображение изображения в какао - PullRequest
12 голосов
/ 08 марта 2011

Я абсолютно новичок в этом, но здесь идет речь: я хочу нажать кнопку в своем приложении и получить изображение (я планирую прочитать его с камеры, но для начала я откроюФайл .TIF.) Однако в конструкторе интерфейсов я могу создавать кнопки внутри объекта NSObject, но в литературе это звучит так, будто мне нужно создать объект NSView для отображения файла.Проблема в том, что когда я делаю это, объект NSObject, кажется, не взаимодействует с объектом NSView.Я пытаюсь сделать что-то вроде:

    NSString *inFilePath;
    inFilePath = @"/Volumes/Data/Temp/Smiles.tiff";
    NSImage *TestImage = [[NSImage alloc] initWithContentsOfFile:inFilePath];
    [MyView setImage:TestImage];

Здесь MyView является объектом NSView.Я получаю предупреждения, что MyView может не отвечать на setImage.Я попытался определить IBOutlet в объекте NSObject, и хотя я могу подключить его в конструкторе интерфейсов, консоль выдает мне ошибку:

нераспознанный селектор, отправленный в класс 0x1e080

Итак, этоне ясно, каков следующий шаг.Есть ли простой способ заставить два разных объекта «общаться» друг с другом?Спасибо

1 Ответ

15 голосов
/ 09 марта 2011

Вы хотите NSImageView объект.В библиотеке Interface Builder это называется Image Well , но вы можете настроить его так, чтобы у него не было лицевой панели.

NSImageView - это подкласс NSView, которыйоптимизирован для отображения изображений.

В вашем файле заголовка (.h) должно быть что-то вроде этого:

 @interface MyController : NSObject
{
    //this declares an outlet so you can hook up the 
    //image view in Interface Builder
    IBOutlet NSImageView* imageView;
}
@end

И в файле вашей реализации (.m):

@implementation MyController

//called once the nib is loaded and all outlets are available
- (void)awakeFromNib
{
    NSString *inFilePath = @"/Volumes/Data/Temp/Smiles.tiff";
    NSImage *testImage = [[NSImage alloc] initWithContentsOfFile:inFilePath];
#if !__has_feature(objc_arc)
  [testImage autorelease];
#endif
    //imageView is your outlet
    [imageView setImage:testImage];
}

@end

В Интерфейсном Разработчике вы должны подключить imageView выход вашего класса, чтобы указывать на NSImageView, который вы поместили на ваше представление.

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