iOS: имя изображения, используемого в XIB

Есть ли способ узнать по кодовому имени изображения, которое использовалось в XIB, например, для фона кнопки?

Скажем, у меня есть xib с кнопкой, у которой свойство Background (для State Config: Default) установлено как «button.png», кнопка имеет IBOutlet, например, myButton. Когда мое представление создается из xib, я могу легко получить доступ к изображению с помощью: [myButton backgroundImageForState:UIControlStateNormal], но это, конечно, UIImage, но мне нужно найти имя изображения ("button.png"), которое использовалось в xib.

Я пытался создать подкласс UIButton и найти что-то с NSCoder внутри initWithCoder:(NSCoder *)aDecoder, но безрезультатно.

Часть xib, где определяется фон кнопки,

<object class="NSCustomResource" key="IBUINormalBackgroundImage">
    <string key="NSClassName">NSImage</string>
    <string key="NSResourceName">button.png</string>
</object>

пытался что-то вроде:

NSObject * obj = [aDecoder decodeObjectForKey:@"IBUINormalBackgroundImage"];

но не работает (как использовать NSCoder при инициализации из пера?)

Также пытался переопределить

-(void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state{
    [super setBackgroundImage:image forState:state];
}

Но никогда не вызывается, однако в awakeFromNib уже все инициализировано и загружено.

Может ли кто-нибудь объяснить / помочь с этим, пожалуйста?


person majuszt    schedule 21.01.2013    source источник
comment
После того, как вы преобразовали png или что-то еще в UIImage, вы потеряете имя.   -  person Hot Licks    schedule 22.01.2013


Ответы (1)


Да, после создания UIImage ссылка на исходное имя файла не сохраняется.

Но если вам это нужно из UIButton, вы можете обойти проблему, используя идентификатор доступности его imageView. Этот метод должен быть доступен в любом классе, являющемся подклассом UIView.

NSString *filename = [button.imageView accessibilityIdentifier] ;
person Kirualex    schedule 22.01.2013