2013-10-01 7 views
10

के लिए एकल जेस्चर टैप पहचानकर्ता जोड़ा जा रहा है मैं एक अनुपूरक दृश्य के साथ एक UICollectionView है - संग्रह के लिए एक शीर्ष लेख संक्षेप में। जब भी मैं headerView.xib के भीतर एक UILabel करने के लिए एक इशारा पहचानकर्ता जोड़ने इंटरफ़ेस बिल्डर का उपयोग कर ऐप्लिकेशन क्रैश मुझे देUICollectionView: अनुपूरक दृश्य

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'invalid nib registered for identifier (MY_HEADER) - nib must contain exactly one top level object which must be a UICollectionReusableView instance' 

क्या मुझे एक UICollectionView की एक अनुपूरक दृश्य में एक UILabel करने के लिए एक इशारा पहचानकर्ता जोड़ने से रोक रहा है ?

+0

मैं फिर से खोलने के लिए प्रश्न को नामांकित किया है। अब तक प्राप्त खुले वोटों के आधार पर इसे जल्द ही खोला जाना चाहिए। यदि और जब ऐसा होता है, तो कृपया अपने समाधान को उत्तर के रूप में पोस्ट करें। यह भविष्य के पाठकों में मदद मिलेगी :) – Harry

+0

मैं भी एक ही मुद्दे को देख रहा हूँ। मैं जेस्चर पहचानकर्ता प्रोग्रामेटिक रूप से जोड़कर आगे बढ़ सकता हूं, लेकिन मुझे आश्चर्य भी है कि इंटरफेस बिल्डर का उपयोग क्यों नहीं करता है। –

उत्तर

19

तो यह लगता है कि आप एक अनुपूरक को देखने के लिए एक इशारा पहचानकर्ता जोड़ने के लिए इंटरफ़ेस निर्माता का उपयोग नहीं कर सकते हैं एक UICollectionView के।

मेरा मानना ​​है कि इस वजह से जब .xib के लोड किए गए हैं, UICollectionView superview एक बात के रूप में प्रकट करना होगा - और जब आप उस UICollectionView आप superview स्तर पर दो चीजों के साथ खत्म हो, करने के लिए इशारा पहचानकर्ता जोड़ने जो दोनों UICollectionView के अनुरूप हैं।

आप फिर भी प्रोग्राम के रूप में UICollectionViewReusableView प्रोटोकॉल के अंदर अपने अनुपूरक दृश्य की परिभाषा का उपयोग कर अपने इशारे पहचानकर्ता लागू कर सकते हैं। (दॅ एक हैडर अनुपूरक देख सकते हैं और एक पाद लेख अनुपूरक कोड में बाद में देखने के बीच भेद करने के लिए इस्तेमाल किया जा रहा है अगर)

if (kind == UICollectionElementKindSectionHeader) { 
    MyHeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"MY_HEADER" forIndexPath:indexPath]; 

    // call headerView methods (to put things into the header's UI objects for example) 
    [headerView ...]; 
    [headerView ...]; 
    [headerView ...]; 

    // add gesture recognition for tapping on a UIlabel within the header (UICollectionView supplementary view) 
    UITapGestureRecognizer *bioTap = [[UITapGestureRecognizer alloc] initWithTarget:headerView action:@selector(handleUILabelTap:)]; 
    // make your gesture recognizer priority 
    bioTap.delaysTouchesBegan = YES; 
    bioTap.numberOfTapsRequired = 1; 
    [headerView.UILabelName addGestureRecognizer:UILabelTap]; 

    reusableview = headerView; 
} 
0

कैसे प्रोग्राम के रूप में के बाद निब की भरी हुई यह जोड़ने के बारे में? वैकल्पिक रूप से, आईबी में आप आइकन का स्थान है कि ऊपर या कौन सा दृश्य प्रतिनिधित्व करता है कि नीचे पहचानकर्ता का प्रतिनिधित्व करता है चलती की कोशिश की है

+0

यह इशारा पहचानकर्ता से संबंधित है। यही है, आईबी का उपयोग कर .xib को इशारा पहचानकर्ता जोड़ना इस त्रुटि का कारण बनता है। –

+0

निब के लोड होने के बाद इसे प्रोग्रामेटिक रूप से जोड़ने के बारे में कैसे? वैकल्पिक रूप से, आईबी में आपने आइकन के स्थान को स्थानांतरित करने का प्रयास किया है जो ऊपर या नीचे पहचानकर्ता का प्रतिनिधित्व करता है जो दृश्य का प्रतिनिधित्व करता है। – pickwick

+0

यह बिल्कुल है। इनपुट के लिए धन्यवाद। –

1

मैं भी आईबी के माध्यम से एक सेल करने के लिए एक इशारा जोड़ने में सक्षम नहीं किया गया।

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

अब तक मैं केवल सेल के माध्यम से और collectionView में एक टैप मिल सकती है।