2012-12-07 17 views
13

में घोंसला है, मेरे पास UITableView है जहां प्रत्येक कक्ष में UICollectionView होता है।चयन तब संभव नहीं है जब UICollectionView UITableVIew

मैं UITableView खड़ी स्क्रॉल और क्षैतिज नेस्टेड UICollectionView स्क्रॉल कर सकते हैं, हालांकि मैं UICollectionView में एक UICollectionViewCell चयन नहीं कर सकते।

चयन UITableView में अक्षम है, और UICcollectionView में सक्षम (डिफ़ॉल्ट स्थिति) सक्षम है।

UICollectionView'scollectionView:didSelectItemAtIndexPath: बस कभी नहीं कहा जाता है।

+0

क्या UICollectionViewDelegate सेट है? – skladek

+0

क्या संग्रह दृश्य में सेल कोई भी टैप प्रतिक्रिया प्रस्तुत करता है (जैसे डमी या ऐसा कुछ)? हो सकता है कि 'UITableView' का सेल संग्रह दृश्य के नल को रद्द कर रहा हो। –

+3

क्या आपको इस जॉन के लिए कोई फिक्स मिला? –

उत्तर

-1

मेरी पहली वृत्ति दो विचारों के बीच इशारा recognizers परस्पर विरोधी हो सकता है कि

अधिक विशेष रूप से, एक नल के लिए UITableView GRS प्राप्त छूता

0

तरह से मैं कर रहा था से UICollectionView GRS रोक रही हों

स्विफ्ट

: इस को हल करने के सेल करने के लिए एक नल इशारा पहचानकर्ता जोड़ने के लिए मैन्युअल रूप से नल संभाल करने के बजाय didSelectRowAtIndexPath पर भरोसा करते हैं जो नहीं कहा जाता हो जाता है था
let tapRecognizer = UITapGestureRecognizer(target: self, action: "cellTapped:") 
tapRecognizer.numberOfTapsRequired = 1 
cell.addGestureRecognizer(tapRecognizer) 

ऑब्जेक्टिव-सी

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellTapped:)]; 
tapRecognizer.numberOfTapsRequired = 1; 
[cell addGestureRecognizer:tapRecognizer]; 

अब आप सेल संभाल कर सकते हैं cellTapped: विधि में टैप किया जा रहा है, और आप सेल कि tapRecognizer.view के माध्यम से उपयोग किया गया था के संदर्भ में प्राप्त कर सकते हैं।

-1

पहले कृपया जांचें कि आपने आवश्यक डेटा स्रोत और प्रतिनिधि प्रदान किए हैं। फिर यदि आप तालिका दृश्य कक्षों की विशिष्ट संख्या पर संग्रह दृश्य का उपयोग कर रहे हैं तो आप सीधे प्रोटोटाइप सेल में डाल सकते हैं। कृपया सुनिश्चित करें कि आपका सेल उचित सीमाओं (चौड़ाई)

-3

से कोई समस्या नहीं होनी चाहिए! कोई कस्टम इशारा पहचानकर्ताओं की आवश्यकता नहीं है। टेबलव्यू के चयन को अक्षम करने की कोई आवश्यकता नहीं है।

करना न भूलें:

  1. स्टोरीबोर्ड या कोड में अपने tableview सेटअप और उसके डेटा स्रोत सेट और एक tableviewcell इसी collectionview के लिए एक संदर्भ प्राप्त dequeueing के बाद cellforrowatindexpath में
  2. प्रतिनिधि और उसके (collectionviews) सेट डेटा स्रोत और प्रतिनिधि
  3. tableviews और collectionviews प्रतिनिधि didselect तरीकों को लागू करने और उनके कॉल लॉग आउट यह काम करता है देखने के लिए

मैंने यह सुनिश्चित करने के लिए उत्तर दिया कि कोई समस्या नहीं है, मैंने जवाब देने से पहले मैंने एक छोटा सा उदाहरण प्रोजेक्ट लागू किया था। अगर मैं अभी भी आपके लिए काम नहीं करता हूं तो मैं इसे अपलोड कर सकता हूं!

शुभकामनाएं!

0

मुझे अभी यह काम मिल गया है, इसलिए मुझे लगा कि मैं आपके साथ अपने समाधान साझा करूंगा।

आवश्यक प्रतिनिधियों और UITableView और नेस्टेड UICollectionView के लिए datasources स्थापित करने के बाद आप अपने UICollectionView इस

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... 
    [tableViewCell bringSubviewToFront:tableViewCell.yourCollectionView]; 
    return cell; 
} 

की तरह पहले चयन दृश्य यह UICollectionView पहली बात यह है कि प्रतिनिधि

के माध्यम से चयन है कर देगा कर सकते हैं
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath; 

दृश्य के किसी अन्य भाग UITableView प्रतिनिधि

०१२३५१६४१०६१ का उपयोग कर चयन किया जाएगा
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

आशा है कि इससे मदद मिलती है!

-1

tableView के लिए अक्षम करने का प्रयास करें और सुनिश्चित करें कि आपके संग्रह दृश्यों के लिए delegate सही तरीके से सेट किया गया है।