मैं एल कैपिटन में पेश किए गए नए NSCollectionView
एपीआई के साथ प्रयोग कर रहा हूं।एनएससीओलेक्शन देखें डेटा स्रोत ठीक से काम नहीं कर रहा है
डब्ल्यूडब्ल्यूडीसी वीडियो के बाद, मैं संग्रह दृश्य के लेआउट को निर्धारित करने के लिए NSCollectionViewFlowLayout
का सबक्लास बना देता हूं।
class Layout : NSCollectionViewFlowLayout {
override func prepareLayout() {
super.prepareLayout()
self.minimumInteritemSpacing = 0
self.minimumLineSpacing = 0
let cheight = self.collectionView!.bounds.height
let cwidth = self.collectionView!.bounds.width
self.itemSize = CGSizeMake(cwidth/2.0, cheight/6.0)
}
}
उसके बाद, मैं डेटा स्रोत के रूप में काम करने के लिए एक NSObject
उपवर्ग बना लिया है।
class DataSource : NSObject, NSCollectionViewDataSource {
func collectionView(collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
func collectionView(collectionView: NSCollectionView, itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem {
/* DOESN'T GET CALLED! */
let item = collectionView.makeItemWithIdentifier("cell", forIndexPath: indexPath)
item.view.wantsLayer = true
item.view.layer?.backgroundColor = NSColor.redColor().CGColor
return item
}
}
मुद्दा कि collectionView:itemForRepresentedObjectAtIndexPath:
कहा जाता हो जाता है कभी नहीं है।
यह कैसे मैं संग्रह दृश्य आरंभ है:
let collectionView = NSCollectionView(frame: view.bounds)
let dataSource = DataSource()
let layout = Layout()
collectionView.collectionViewLayout = layout
collectionView.registerClass(NSCollectionViewItem.self,
forItemWithIdentifier: "cell")
collectionView.dataSource = dataSource
collectionView.backgroundColors = [.blackColor()]
मैं स्पष्ट रूप से देख सकते हैं अपने superview में संग्रह देखने के लिए, लेकिन कोई कोशिकाएं होती हैं।
इसके अलावा, अगर यह प्रतिनिधि, प्रतिनिधि के बाहर बुलाया जाता है (लेकिन सेल क्लास पंजीकृत होने के बाद) ऐप क्रैश करता है!
let item = collectionView.makeItemWithIdentifier("cell", forIndexPath: /*any index path*/)
क्या मैं कुछ गलत कर रहा हूं या NSCollectionView
नया एपीआई टूट गया है?
धन्यवाद।
यह शायद एक बेवकूफ सवाल है लेकिन आप अपने दृश्य के सबव्यू में संग्रह दृश्य जोड़ रहे हैं, है ना? – Aaron
@Aaron मैं हूँ। मैं अपने पर्यवेक्षण (कोशिकाओं के बिना) संग्रह संग्रह देख सकता हूं –
आप कैसे जानते हैं कि विधि को नहीं कहा गया था? क्या आपने उस विधि के अंदर कुछ ब्रेकपॉइंट सेट किया था? या विधि के शरीर के अंदर कुछ लॉग करने की कोशिश की? क्या आपकी 'cell.xib' फ़ाइल एक ही बंडल में है? या आप इंटरफ़ेस प्रोग्रामेटिक रूप से बनाते हैं (जैसा कि आपने _class_ पंजीकृत किया है लेकिन _nib_ नहीं)? क्या आपने संग्रह दृश्य का प्रवाह फ़ॉर्म _ "विरासत" _ को बदल दिया है आईबी में _ "प्रवाह" _? – holex