2011-06-05 13 views
8

मैं नीचे दिए गए कोड के लिए @selector में कोई तर्क कैसे दे सकता हूं?@ चयनकर्ता में तर्क कैसे पारित करें?

[thisIconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside]; 

-(void)changeIconState:(UITableViewCell*)thisCell 
{ 
    //do something 
} 
+0

एक तरह से आप कई तर्कों के साथ चयनकर्ता को कॉल कर सकते हैं, और यह प्रश्न पहले से ही उत्तर दिया गया था ... आप इसे पढ़ सकते हैं [यहां] (http://stackoverflow.com/questions/1018195/objective-c-calling- चयनकर्ताओं के साथ-एकाधिक-तर्क) – iruleonu

उत्तर

6

सबसे पहले, कोलन चयनकर्ता का हिस्सा है: @selector(changeIconState:)

दूसरा, क्रियाएं विधियां हैं जो पैरामीटर का एक विशेष सेट लेती हैं - आप किसी भी विधि को किसी क्रिया के रूप में उपयोग नहीं कर सकते हैं। आम तौर पर, क्रियाएं इस तरह दिखती हैं:

- (void)myAction:(id)sender; 

जहां प्रेषक उस ऑब्जेक्ट को पॉइंटर है जो कार्रवाई भेज रहा है। आपके कोड में, जब यह आइकन बटन टैप किया जाता है, तो वह बटन प्रेषक के रूप में पास किया जाएगा।

+0

मेरे पास प्रत्येक सेल पर एक बटन है। मैं यह कैसे कर सकता हूँ? – Zhen

+0

इस बात पर निर्भर करता है कि आप चीजों को कैसे सेट करते हैं। आप यह पता लगाने के लिए बटन के पर्यवेक्षक की जांच कर सकते हैं कि यह कौन सा सेल है। या, आप बटन को व्यू कंट्रोलर के बजाय सेल को लक्षित कर सकते हैं। सेल की कार्रवाई तब आपके '-changeIconState:' विधि को कॉल कर सकती है। – Caleb

1

आप सेल करने के लिए कौन सा बटन अंतर्गत आता है, यह button.superview.superview का उपयोग कर, लेकिन मुझे नहीं लगता कि आप नियंत्रण की घटनाओं के लिए लक्ष्य के तरीकों के तर्कों को बदल सकते हैं हैं मिल चाहते हैं।

0

किसी चयनकर्ता के माध्यम से डेटा भेजने का प्रयास करने के सबसे आम कारणों में से एक है जब आप UITableViewCell में कस्टम बटन का उपयोग करते हैं।

मैथियस बॉच ने एक संबंधित पोस्ट में प्रेषक पर सेल को देखकर इंडेक्सपाथ को कैसे प्राप्त किया जाए, इस पर एक उत्कृष्ट कोड नमूना प्रदान किया। https://stackoverflow.com/a/5690329/654870 देखें।

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