2012-03-09 17 views
8

टैग मूल्य का एक टैग के रूप में पारित करने के लिए एक पूर्णांक हैकैसे एक स्ट्रिंग UIButton

-(void)pickTheQuiz:(id)sender{   
    NSLog(@"The part number is:%i",((UIControl*)sender).tag);//i need to receive a string value instead of numeric value 
} 
+1

की मदद से ऐसा कर सकते हैं के रूप में bellow) * आपको ऐसा करने की ज़रूरत क्यों है? 'टैग' एक पूर्णांक है, इसलिए आप वहां एक स्ट्रिंग सेट करने में सक्षम नहीं होंगे। लेकिन मैं दोहराता हूं - कृपया हमें बताएं कि आपको ऐसा करने की आवश्यकता क्यों है क्योंकि एक बेहतर समाधान की संभावना है। – mattjgalloway

+0

आप टैग – Hector

+0

में स्ट्रिंग मान को पार्स नहीं कर सकते हैं ठीक है, कहें कि बटन दबाए जाने पर मुझे 'पता फ़ील्ड' मान पास करने की आवश्यकता है। मैं उसे कैसे कर सकता हूँ? अग्रिम में thanx :) – Luca

उत्तर

11

आप एक के लिए एक टैग का पूर्णांक मान परिवर्तित कर सकते हैं साथ NSString:

[NSString stringWithFormat:@"%i", ((UIControl*)sender).tag]; 

या, यदि आप वास्तव में एक यूआई वस्तु के लिए पहचानकर्ता के रूप में एक स्ट्रिंग की जरूरत है, बस इसे उपवर्ग और की तरह कोई प्रॉपर्टी जोड़ते हैं:

@property (nonatomic, strong) NSString *stringID; 

और उसके बाद टैग प्रॉपर्टी का उपयोग करने के बजाय इसका उपयोग करें।

0

एनएसएलओजी (@ "भाग संख्या है:% @", [एनएसएसटींग स्ट्रिंगविथफॉर्मैट: @ "% डी", (यूआईसींट्रोल *) प्रेषक) .tag]);

0

जहां तक ​​मुझे टैग पता है हमेशा int टाइप करते हैं।

NSString *temp : [[NSString alloc]init]; 
if(sender.tag == x){ 
    temp = @"some string"; 
) 

और विभिन्न टैग के लिए मामलों बनाने:

आप की तरह मैन्युअल रूप से इसे बदलना होगा।

कृपया मुझे ठीक कर लें im गलत यहाँ :)

0

-(void)pickTheQuiz:(id)sender{   
NSNumber *tag = [NSNumber numberWithInt:sender.tag]; 
    NSLog(@"The part number is:%@",[tag stringValue]); 
} 
1

कोशिश टैग संपत्ति केवल पूर्णांकों स्वीकार करेंगे, और यदि पूर्णांक मान हैकिंग एक स्ट्रिंग को पाने के लिए आप के लिए एक विकल्प नहीं है , आप UIButton को उप-श्रेणी कर सकते हैं, और उसके बाद आईबी में उपयोगकर्ता परिभाषित रनटाइम विशेषता अनुभाग का उपयोग अपने स्टोरीबोर्ड में संपत्ति का मूल्य निर्धारित करने के लिए कर सकते हैं।

उपवर्ग एक नया गैर पूर्णांक संपत्ति के साथ UIButton:

@interface MyCustomUIButton : UIButton 

@property (strong) NSString* stringTag; 

@end 

सेट उप-वर्ग के लिए अपने बटन के वर्ग:

पहचान निरीक्षक> कस्टम कक्षा> कक्षा = > MyCustomUIButton

संपत्ति मूल्य को सेट करें मीटर आईबी या कोड के माध्यम से:

आईबी से:

पहचान निरीक्षक> उपयोगकर्ता निर्धारित क्रम गुण:

कुंजी पथ => stringTag

प्रकार => स्ट्रिंग

मूल्य = > yourstringvalue

या एफ रॉम कोड:

((MyCustomUIButton*)yourButton).stringTag = @"yourstringvalue"; 

तो फिर आप अपने बटन कार्रवाई विधि से संपत्ति का मूल्य प्राप्त कर सकते हैं:

-(void)yourMethod:(id)sender 
    {   
    NSLog(@"The string value is: ",((MyCustomUIButton*)sender).stringTag); 

    // or use this idiom, to avoid a possible crash if it's the wrong class: 

    if ([sender respondsToSelector:@selector(stringTag)]) 
      testeee = [sender valueForKey:@"stringTag"]; 
    else 
      NSLog(@"this IS NOT a MyCustomUIButton, it's a plain UIButton"); 

    // testeee will be NULL if you FORGOT to set the 
    // User Defined Runtime Attribute for 'stringTag' in storyboard 

    // note that a useful alternative to 
    // if ([sender respondsToSelector:@selector(stringTag)]) 
    // is... 
    // if ([sender respondsToSelector:NSSelectorFromString(@"stringTag")]) 
    } 
+0

हायया जस्टस! बस स्पष्ट होने के लिए, आपको एक कस्टम क्लास का उपयोग करना चाहिए, क्या यह सही जस्टस है? आप बस कुछ "कुंजी परिभाषित रनटाइम विशेषताओं" को कुछ कुंजी/मान पर सेट नहीं कर सकते हैं, और फिर इसे valueForKey का उपयोग करके उठाएं - यह सही है? धन्यवाद! – Fattie

+0

बीटीडब्ल्यू मुझे विश्वास है कि आपको (मजबूत) विशेषता की आवश्यकता है या वह चूसने वाला दुर्घटनाग्रस्त हो जाएगा ... – Fattie

0

एक NSString पैरामीटर गुजर साथ UIButton सिर्फ buuton के शीर्षक सेट IE के लिए एक आसान तरीका नहीं है स्पष्ट रंग और फ़ॉन्ट आकार 0.0f के साथ। यह एक मान्य है यदि आप एक छवि का उपयोग कर रहे हैं ([बटन सेटबैकग्राउंड छवि: किसी भी छवि। forState: UIControlStateNormal]; बटन पर और titl नहीं दिखाई दे रहा है और फिर आप प्राप्त कर सकते हैं "sender.currentTitle" और प्रयोग इस चर

6

आप सुविधा objc_runtime

#import <objc/runtime.h> 

static char kButtonAssociatedKey; 

NSString *aStrKey = [NSString stringWithFormat:@"Any Key"]; 
UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom]; 
[button setTitle:addressField forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(pickTheQuiz:) forControlEvents:UIControlEventTouchUpInside]; 
button.tag=1; 

objc_setAssociatedObject(button, 
         &kButtonAssociatedKey, 
         aStrKey, 
         OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

-(void)pickTheQuiz:(id)sender 
{ 
    NSString *aStrKey = objc_getAssociatedObject(sender, &kButtonAssociatedKey); 
    objc_removeAssociatedObjects(sender); 
    NSLog(@"%@", aStrKey); 
} 
+1

यह स्वीकार्य उत्तर होना चाहिए। बहुत खराब सेब ने इसे NSObject –

+1

पर एक विधि के रूप में नहीं जोड़ा है धन्यवाद। यह इस प्रश्न के लिए सबसे अच्छा जवाब है। – Kishore