2013-08-28 5 views
6

मेरे पास कस्टम टेबल व्यू सेल है और कस्टम क्लास बनाया है। मैं कक्ष से तालिका दृश्य नियंत्रक के संदर्भ कैसे प्राप्त कर सकता हूं?कस्टम टेबल व्यू से क्लास व्यू कंट्रोलर का संदर्भ कैसे प्राप्त करें सेल क्लास

मेरे पास यह कस्टम टेबलव्यू सेल क्लास है। इसमें मेरे पास एक बटन है जो एक टैप ईवेंट से जुड़ा हुआ है। टैप पर मुझे इवेंट ठीक मिल जाता है लेकिन मैं टेबल व्यू कंट्रोलर पर पकड़ लेना चाहता हूं ताकि मैं टेबल व्यू के शीर्ष पर एक्शन शीट दिखा सकूं।

@interface MTPurchasedCartItemCell : UITableViewCell 

- (IBAction)onShareTap:(id)sender; 

@end 
+0

आपको अधिक डेटा, यहां तक ​​कि कोड देना होगा। तुम क्या करने की कोशिश कर रहे हो? तुमने क्या किया है? सूचक द्वारा आपका क्या मतलब है? आपको पॉइंटर की क्या आवश्यकता है? – CaptJak

+0

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

+0

बटन का लक्ष्य नियंत्रक को सेट किया जाना चाहिए, जिसे आपने स्वयं को लक्ष्य लक्ष्य में लक्षित तर्क के रूप में पारित करके सेट किया है: क्रिया: forControlEvents: – rdelmar

उत्तर

3

जिस तरह से मैं ऐसा करता हूं वह एक ब्लॉक इवेंट हैंडलर का उपयोग करना होगा। अपने MTPurchasedCartItemCell कक्षा में तो जैसे हेडर फाइल में कोई प्रॉपर्टी जोड़ते हैं:

@property (nonatomic, copy) void (^tapHandler)(id sender); 

और कार्यान्वयन फ़ाइल में आप यह कर सकते हैं:

- (IBAction)onShareTap:(id)sender { 
    if (self.tapHandler) { 
     tapHandler(sender); 
    } 
} 

और अंत में अपने नियंत्रक वर्ग में, में कुछ इस तरह करते हैं अपने cellForRowAtIndexPath::

... 
cell.tapHandler = ^(id sender) { 
    // do something 
} 
... 
+1

पर एक प्रतिनिधि विधि कहता है क्योंकि बुद्ध सिद्धार्थ को चेतावनी देते हैं, बहुत चालाक होने के बारे में सावधान रहें। [लक्ष्य-क्रिया का उपयोग करना] (http://stackoverflow.com/a/19608500/242933) एक ही काम करने का एक आसान तरीका है। – ma11hew28

-1

मुझे लगता है कि एक बटन घटना का उपयोग कर एक कस्टम सेल से तालिका संदर्भ हो जाता है बहुत कुछ इसी तरह किया है।

कोड:

-(IBAction)onShareTap:(UIButton *)sender { // i've used a button as input.. 

UIButton *senderButton = (UIButton *)sender; 
UITableViewCell *buttonCell = (UITableViewCell *)senderButton.superview.superview.superview; 
UITableView* table = (UITableView *)[buttonCell superview]; 

NSLog(@"Table: %@", table); 
} 
+0

अपने सेल में से किसी एक से तालिका दृश्य का संदर्भ प्राप्त करने के लिए 'पर्यवेक्षण' का उपयोग करना खतरनाक है क्योंकि दृश्य पदानुक्रम का विवरण निजी है और आईओएस के एक अलग संस्करण में बदल सकता है, जो आपके कोड को तोड़ देगा। साथ ही, @EncorePTL तालिका दृश्य नियंत्रक को कैसे प्राप्त करने के बारे में पूछ रहा है, तालिका दृश्य नहीं। – ma11hew28

2

आप कस्टम सेल करने के लिए बटन के लिए एक सार्वजनिक @property जोड़ने पर विचार हो सकता है।

कि ऐसा करने के लिए, अपने कस्टम सेल वर्ग के हेडर फाइल करने के लिए निम्न पंक्ति जोड़ें:

@property (weak, nonatomic) IBOutlet UIButton *myButton; 

आप इंटरफ़ेस बिल्डर में बटन बना रहे हैं तो है यही कारण है कि। आप कोड में बटन बना रहे हैं, आप के बजाय इस लाइन जोड़ेंगे:

@property (nonatomic) UIButton *myButton; 

तब, जब आरंभ करने या अपने तालिका दृश्य नियंत्रक से सेल को विन्यस्त, अब आप myButton के लिए एक संदर्भ है और एक जोड़ सकते हैं लक्ष्य के रूप में अपने टेबल व्यू नियंत्रक के साथ कार्रवाई करें।

फिर, कार्रवाई विधि में, आप बटन से सेल प्राप्त कर सकते हैं। Objective-C: How to generate one unique NSInteger from two NSIntegers? का उत्तर बताता है कि कैसे।

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