IBOutletCollection内のすべてのUIViewを無効/有効にしたいとします。 しかし、私はsetEnabled
を直接呼び出すことはできませんので、UIViewsクラスで異なります。IBOutletCollection内のすべてのサブビューを無効にする
次に、performSelector
メソッドを使用すると思っていましたが、Object asパラメーターのみを送信できます。
私はこのサイトと他のサイト([NSNumber numberWithBool YES/NO]
)で読むことができますが、bool YESまたはNOのいずれかを指定してNSNumberを送信すると、有効な状態は変更されません。
私は、しかし、私は彼らが有効になってそれを設定する方法を見つけることができませんでした、nil
を使用して動作するように無効部分を得た:
-(void) setControlsState: (BOOL) enabled
{
for(UIView *subview in controls)
{
NSNumber *boolObject = enabled? [NSNumber numberWithBool: YES]: nil;
if([subview respondsToSelector: @selector(setEnabled:)])
{
[subview performSelector: @selector(setEnabled:) withObject: boolObject];
}
else if([subview respondsToSelector: @selector(setEditable:)])
{
[subview performSelector: @selector(setEditable:) withObject: boolObject];
}
subview.alpha = enabled? 1: 0.5;
}
}
。注(@property (strong, nonatomic) IBOutletCollection(UIView) NSArray *controls;
)
: UITextViewsは細かいウィット上記のコードを動作し、それはsetEnabled
を使用UIViews、唯一の他のタイプです。
ありません;) – Tyilo
クール。実際に 'userInteractionEnabled'を使用できない場合は、コードのリビジョンを編集しました。これは私が推測するのは、将来の参照のためだけです。 – NJones