डेलीगेट्स जाने का रास्ता हैं।
जैसा कि विचारों का उपयोग करते हुए अन्य उत्तरों के साथ देखा गया है वह पुराना हो सकता है। कल कौन जानता है कि एक और आवरण हो सकता है और उपयोग करने की आवश्यकता हो सकती है cell superview]superview]superview]superview]
। और यदि आप टैग का उपयोग करते हैं तो आप सेल की पहचान करने के लिए अन्य शर्तों की संख्या के साथ समाप्त हो जाएंगे। उस सब से बचने के लिए प्रतिनिधियों को सेट करें। (ऐसा करने से आप एक पुनः प्रयोग करने योग्य सेल क्लास बना रहे होंगे। आप उसी सेल क्लास को बेस क्लास के रूप में उपयोग कर सकते हैं और आपको बस इतना करना है कि प्रतिनिधि विधियों को लागू करें।)
पहले हमें एक इंटरफ़ेस (प्रोटोकॉल) की आवश्यकता होती है जो सेल द्वारा संचार (प्रतिनिधि) बटन क्लिक करने के लिए उपयोग किया जाएगा। ( आप प्रोटोकॉल के लिए एक अलग। H फ़ाइल बना सकते हैं और इसमें टेबल व्यू कंट्रोलर और कस्टम सेल क्लास दोनों को शामिल कर सकते हैं या सिर्फ कस्टम सेल क्लास में इसे जोड़ सकते हैं जो कि टेबल व्यू कंट्रोलर में शामिल हो जाएंगे )
@protocol CellDelegate <NSObject>
- (void)didClickOnCellAtIndex:(NSInteger)cellIndex withData:(id)data;
@end
इस प्रोटोकॉल को कस्टम सेल और टेबल व्यू कंट्रोलर में शामिल करें। और सुनिश्चित करें कि तालिका दृश्य नियंत्रक इस प्रोटोकॉल की पुष्टि करता है।
कस्टम सेल में दो गुण बनाएँ:
@property (weak, nonatomic) id<CellDelegate>delegate;
@property (assign, nonatomic) NSInteger cellIndex;
में UIButton
IBAction प्रतिनिधि क्लिक: ( एक ही कस्टम सेल कक्षा में किसी भी कार्रवाई कौन सा दृश्य नियंत्रक को वापस सौंप किए जाने की आवश्यकता के लिए किया जा सकता है )
- (IBAction)buttonClicked:(UIButton *)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOnCellAtIndex:withData:)]) {
[self.delegate didClickOnCellAtIndex:_cellIndex withData:@"any other cell data/property"];
}
}
cellForRowAtIndexPath
सेल को हटाने के बाद तालिका दृश्य नियंत्रक में , उपरोक्त गुणों को सेट करें।
cell.delegate = self;
cell.cellIndex = indexPath.row; // Set indexpath if its a grouped table.
और प्रतिनिधि को टेबल व्यू कंट्रोलर में लागू करें:
- (void)didClickOnCellAtIndex:(NSInteger)cellIndex withData:(id)data
{
// Do additional actions as required.
NSLog(@"Cell at Index: %d clicked.\n Data received : %@", cellIndex, data);
}
यह टेबल व्यू कंट्रोलर में कस्टम सेल बटन क्रियाओं को प्राप्त करने के लिए आदर्श दृष्टिकोण होगा।