जोड़ते समय जब मैं इंटरफेस बिल्डर में UICollectionCell
UICollectionView
डालता हूं तो मैं इसे अज्ञात कारणों से नहीं डाल सकता।UICollectionView UICollectionCell
- iOS SDK 6.0
- XCode 4.5.1
- मैं स्टोरीबोर्ड
जोड़ते समय जब मैं इंटरफेस बिल्डर में UICollectionCell
UICollectionView
डालता हूं तो मैं इसे अज्ञात कारणों से नहीं डाल सकता।UICollectionView UICollectionCell
केवल UICollectionView स्टोरीबोर्ड अंदर UICollectionViewCell अंदर है का उपयोग कर बाहर के साथ एक कस्टम UICollectionViewCell
का कार्यान्वयन है। यदि XIB का उपयोग करें, तो CellName.xib के साथ एक नया XIB बनाएं, इसमें CollectionViewCell जोड़ें, UICollectionView कस्टम क्लास का नाम निर्दिष्ट करें। उसके बाद रजिस्टरNib का उपयोग करें।
नमूना कोड: https://github.com/lequysang/TestCollectionViewWithXIB
@NAQ ठीक है, आप अपनी कक्षा का उपयोग कैसे करते हैं? सुनिश्चित करें कि आपने अपनी निब पंजीकृत की है जो किसी वर्ग से जुड़ा हुआ है, लेकिन कक्षा initWithFrame को नहीं बुलाया जाता है। इसलिए यदि आप init पर अपने xib आउटलेट पर कुछ अतिरिक्त स्टाइल नहीं कर सका। इस उदाहरण में माईसेल क्लास रखने का क्या फायदा है? – topwik
initWithFrame किसी भी ज़िब सेल में काम नहीं करता है। MyCell.h को आईबीओलेट को हुक अप करें और जागने में अन्य विधियों को कॉल करें। –
मुझे आश्चर्य है कि ऐप्पल दस्तावेज़ीकरण में इसका उल्लेख करने के लिए पर्याप्त दयालु नहीं था। मेरे जीवन के -1 घंटे। – expert
UICollectionView
को जोड़ने के बिना उपकरण पट्टी करने के लिए जा रहा है
यदि आप Xib
फ़ाइल का उपयोग कर रहे हैं तो आप UICollectionViewCell
पर सीधे UiCollectionView
पर नहीं डाल सकते हैं। यह केवल स्टोरीबोर्ड में संभव है। एक अलग Xib फ़ाइल में UICollectionViewCell
जोड़ें। अपना वर्ग का नाम दें। तो फिर या तो वर्ग या xib से पहले संग्रह दृश्य का प्रकटन
[self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:CELL_ID];
आमतौर पर यह viewDidLoad
में किया जाता है रजिस्टर।
यह Xib
@implementation CollectionViewCell
@synthesize imageView = _imageView;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor whiteColor];
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowRadius = 5.0f;
self.layer.shadowOffset = CGSizeMake(2.0f, 2.0f);
self.layer.shadowOpacity = 0.5f;
// Selected background view
UIView *backgroundView = [[UIView alloc]initWithFrame:self.bounds];
backgroundView.layer.borderColor = [[UIColor colorWithRed:0.529 green:0.808 blue:0.922 alpha:1]CGColor];
backgroundView.layer.borderWidth = 10.0f;
self.selectedBackgroundView = backgroundView;
// set content view
CGRect frame = CGRectMake(self.bounds.origin.x+5, self.bounds.origin.y+5, self.bounds.size.width-10, self.bounds.size.height-10);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
self.imageView = imageView;
[imageView release];
self.imageView.contentMode = UIViewContentModeScaleAspectFill ;
self.imageView.clipsToBounds = YES;
[self.contentView addSubview:self.imageView];
}
return self;
}
यदि आप एक xib का उपयोग कर रहे हैं जिसके लिए आप कक्षा निर्दिष्ट करते हैं तो आप क्या करेंगे? मेरे पास मेरी सेल xib की कस्टम क्लास के रूप में एक UICollectionViewCell क्लास है। मैं nibName firCellWithResueIdentifier के साथ nibName पंजीकृत करता हूंडिडलोड (फिर से xib एक सेल क्लास से जुड़ा/जुड़ा हुआ है)। क्या मैं अपने सेल क्लास का उपयोग कर कोड में किए गए अतिरिक्त अनुकूलन के साथ एक xib लेआउट गठबंधन कर सकता हूं? ऐसा लगता है कि सीधे ऊपर प्रवाह प्रवाह में प्रवेश नहीं करेगा यदि आप सिर्फ निब पंजीकृत करते हैं तो कक्षा में।क्या मुझे अपने संग्रह दृश्य के साथ दोनों निब और कक्षा पंजीकृत करना है? – topwik
@towpse initWithFrame को सेल.एम. में जागने के लिए प्रतिस्थापित करें। –
@towpse वापस न करें NAQ ने कहा क्या सही है। निब पंजीकृत करें। फिर अतिरिक्त अनुकूलन के लिए initWithCoder या awakeFromNib अपने कस्टम सेल (cell.m में) –
ठीक है।
यह पूरी तरह से काम करेगा।
[यहां एक सरल walkthrough] (http://stackoverflow.com/a/31735229/3681880) 'UICollectionViewCell' को 'UICollectionView' में बनाने के लिए) है। – Suragch