2016-10-11 13 views
0

私はボタンの色を設定しないと、すべてのボタンの背景色をデフォルトの赤色に変更するのに役立つカスタムボタンを作成します。
だから私はこのように行うと、それは.hファイルに子クラスフォーム親クラス(UIButton)のプロパティをオーバーライドする必要があります

うまく機能し、私は

@interface ITSButton : UIButton 
@property(nonatomic, strong) UIColor *backgroundColor; 
@property(nonatomic, strong) UIColor *onPressBackgroundColor; 
@end 

の.m FIEで

-(UIColor *)backgroundColor 
{ 
    if(!_backgroundColor){ 
     _backgroundColor = [UIColor redColor]; 
    } 
    return _backgroundColor; 
} 

を持っているしかし、問題はここにbackgroundColorすでにありますUIButtonクラスのプロパティです。 ITSButtonで上書きすればいいのですか?

そして、私はbackgroundColorプロパティをオーバーライドしない場合、私は機能(UIColor *)backgroundColorを使用することはできませんので、私は赤

答えて

1

にデフォルトの背景を設定することはできませんそして、私はbackgroundColorプロパティをオーバーライドしていない場合は、私ができます機能(UIColor*)backgroundColorを使用していないので、私ははいことができます赤

をデフォルトの背景を設定することはできません、と私はこれを実現することは、おそらくあなたのジレンマへの鍵だと思います。 backgroundColorだけを残す!それには重要な仕事があります。代わりにのサブクラスのに実装してをこのボタンの背景色を赤に設定します。可能なすべてのイニシャライザでこれを行う必要があります。 2つの可能性が最も高いのはinitWithFrame:initWithCoder:です。

このクラスのすべてのボタンと、このクラスのサブクラスのすべてのボタンは、デフォルトでの赤色になります。これはあなたが望むものです。これを変更するには、ボタンの背景色を設定します。これは、ボタンを使用するのと同じです。

サブクラスでイニシャライザをオーバーライドする方法についてドキュメントを読むのを忘れないでください。

+0

あなたの解決策を理解していますので、私の質問に対する答えは「私はプロパティbackgroundColorをオーバーライドすべきではありません。 –

+0

初期化の方法のために、デフォルトでボタンを赤色にするだけです。 – matt

関連する問題