2011-03-21 2 views
9

मैं पैरामीटर के रूप में [NSArray makeObjectsPerformSelector:withObject:] पर BOOL को पास करना चाहता हूं। जैसेऑब्जेक्ट्स बनाने के लिए बूल पास करनाफॉर्मर चयनकर्ता: ऑब्जेक्ट:

[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: NO]; 

उपर्युक्त कोड काम नहीं करेगा क्योंकि ऑब्जेक्ट केवल आईडी स्वीकार करता है।

ऐसा करने का सही तरीका क्या है?

मैं इस के साथ कुछ कोड देखी गई:

[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: (id)kCFBooleanTrue]; 
[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: (id)kCFBooleanFalse]; 

यह 4.2 सिम्युलेटर पर ठीक काम करता है, लेकिन 4.2 iphone पर विफल रहता है।

उत्तर

10

आप एक UIButton (या यहां तक ​​कि UIView) श्रेणी भी लिख सकते हैं जो आपको सेटएनेबल का उपयोग करने की अनुमति देता है: किसी ऑब्जेक्ट के साथ।

@interface UIButton(setEnabledWithObject) 
- (void)setEnabledWithNSNumber:(NSNumber *)bNum; 
@end 

@implementation UIButton(setEnabledWithObject) 
- (void)setEnabledWithNSNumber:(NSNumber *)bNum { 
    [self setEnabled:[bNum boolValue]]; 
} 
@end 

और फिर आप

[buttons makeObjectsPerformSelector:@selector(setEnabledWithNSNumber:) withObject:[NSNumber numberWithBool:NO]]; 
[buttons makeObjectsPerformSelector:@selector(setEnabledWithNSNumber:) withObject:[NSNumber numberWithBool:YES]]; 
+0

धन्यवाद! यह काम करेगा। काश उनके पास ऐसा करने का आसान तरीका है। –

5

मैं एक याद इस्तेमाल कर सकते हैं बस withObject:@YES से कुछ और करना था लेकिन जब से मैं इसे अब और मैं पता लगा नहीं मिल सकता है यह

साथ के रूप में अच्छी तरह से काम
[buttons enumerateObjectsUsingBlock:^(NSButton *item, NSUInteger idx, BOOL *stop) 
    {[item setEnabled:YES];}]; 

या तेज/बड़े/readabler :) रास्ता:

for (NSButton *item in buttons) {[item setEnabled:YES];}; 

एक पता होना चाहिए कि enumerateObjectsUsingBlock विशेष रूप से तेजी से नहीं है, लेकिन इसे यहाँ वैसे भी एक बहुत बड़ा हत्यारा नहीं होना चाहिए :) आप तेजी चाहते हैं तो आप भी है कि एक for (;;) ब्लॉक के साथ, सुनिश्चित करें :)

0

यदि आप क्या कर सकते हैं स्थिर में बूल पैरामीटर पास करना तो link में मेरा उत्तर सहायक होगा ..

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^