3

ボタンの背景など、XIBで使用されている画像のコードネームを確認する方法はありますか?

プロパティBackground(State Config:Defaultの場合)が「button.png」に設定されているボタン付きのxibがあるとします。ボタンには、myButtonなどのIBOutletがあります。ビューがxibから作成されている場合、[myButton backgroundImageForState:UIControlStateNormal]で画像に簡単にアクセスできますが、もちろんUIImageですが、画像の名前( "button.png")がxibで使用されていることを確認する必要があります。

UIButtonをサブクラス化して、initWithCoder:(NSCoder *)aDecoder内にNSCoderがあるものを見つけようとしましたが、結果はありません

ボタンの背景が定義されているxibの一部は

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

次のようなことを試みていました:

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

しかし、機能しません(nibから初期化するときにNSCoderを使用するにはどうすればよいですか?)

また、オーバーライドしようとしていました

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

ただし、呼び出されることはありませんが、awakeFromNibでは、すべてがすでに初期化されてロードされています。

誰かがこれを説明/助けてもらえますか?

4

1 に答える 1

1

はい、UIImageを使用すると、元のファイル名からの参照は保持されません。

ただし、UIButtonから必要な場合は、そのimageViewのアクセシビリティ識別子を使用して問題を回避できます。このメソッドは、UIViewをサブクラス化するすべてのクラスで使用できる必要があります。

NSString *filename = [button.imageView accessibilityIdentifier] ;
于 2013-01-22T15:11:28.110 に答える