2011-04-04 11 views
11

मेरे पास दो UIButtons हैं (मैं उन्हें आईबी का उपयोग करके बना देता हूं), जो एक ही आईबीएक्शन के साथ फ़ाइल के मालिक से जुड़ा हुआ है, मैं कैसे परिभाषित कर सकता हूं कि उनमें से कौन सा दबाया जाता है?परिभाषित करने के लिए कि कौन सा बटन दबाया गया है यदि दोनों के पास समान IBAction है?

उत्तर

26

आपकी कार्रवाई इस तरह लागू किया जा सकता:

- (IBAction) buttonTapped: (id) sender 
// you can also replace id with UIButton* 

तो इस प्रक्रिया में -isEqual से जांच कर सकते हैं अंदर: विधि

- (IBAction) buttonTapped: (id) sender 
{ 
    if ([sender isEqual:referenceToOneOfYourButtons]) { 
    // do something 
    } 
    else if ([sender isEqual:referenceToTheOtherButton]) { 
    ... 
    } 
} 

वैकल्पिक रूप से आप बटन की संपत्ति टैग करने के लिए अलग-अलग मान सेट कर सकते हैं और फिर:

- (IBAction) buttonTapped: (UIButton*) sender 
{ 
    const int firstButtonTag = 101; 
    const int otherButtonTag = 102; 

    if (sender.tag == firstButtonTag) { 
    ... 
    } 
    else if (sender.tag == otherButtonTag) { 
    ... 
    } 
} 

आपको यह टैग अपने .xib या i में सेट करने की आवश्यकता है। एन कोड

+0

धन्यवाद, Bartosz! पॉइंटर तुलना और टैग दोनों के अच्छे उदाहरणों के लिए –

+1

+1। –

0

- (IBAction)someAction:(id)sender; 

के रूप में अपनी कार्रवाई घोषित एक नियंत्रण someAction संदेश भेजता है, यह अपने आप में इस पैरामीटर के रूप में साथ भेज देंगे।

उदा।

- (IBAction)someAction:(id)sender { 
    NSLog(@"sender: %@", sender); 
} 

अब आप जानते हैं कि कौन सा नियंत्रण संदेश भेजता है।

6

इन पंक्तियों के साथ कुछ ... मानते हुए बटन 1 और बटन 2 आपके हेडर फ़ाइल में हैं।

- (IBAction)buttonPressed:(UIButton *)button { 
     if (button == button1) { 
     } else if (button == button2) { 
     } 
} 

या इंटरफेस बिल्डर में टैग सेट करें और टैग की जांच करें।

- (IBAction)buttonPressed:(UIButton *)button { 
      if (button.tag == 1) { 
      } else if (button.tag == 2) { 
      } 
    } 

टैग शून्य-आधारित नहीं हैं। 1 या अधिक का प्रयोग करें।

0

- (IBAction) myButtonAction: (आईडी) इस {

if ([sender tag] == 0) { 
     // do something here 
    } 
    if ([sender tag] == 1) { 
     // Do some think here 
    } 

} 

// अन्य शब्द

में - (IBAction) myButtonAction: (आईडी) इस {

 NSLog(@"Button Tag is : %i",[sender tag]); 

    switch ([sender tag]) { 
    case 0: 
     // Do some think here 
     break; 
    case 1: 
     // Do some think here 
     break; 
    default: 
     NSLog(@"Default Message here"); 
     break; 

}

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