से ड्रैग और ड्रॉप करें मैं फाइंडर से ड्रैग और ड्रॉप को अपने ऐप के एनएसटीबल व्यू में लागू करने की कोशिश कर रहा हूं। सेटअप NSTableView
का उपयोग करता है, एक सरणी नियंत्रक जो कोर डेटा स्टोर में कोको बाइंडिंग का उपयोग करके डेटास्रोत के रूप में कार्य करता है।एनएसटीबल व्यू और फाइंडर
मैं निम्नलिखित, मूल रूप से विभिन्न ब्लॉग पोस्ट मैं पर पाया अतः और अन्य साइटों निम्नलिखित किया:
मेरे विचार नियंत्रक के awakeFromNib
में मैं फोन:
[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypePNG, nil]];
मैं NSArrayController subclassed और निम्नलिखित जोड़ा मेरे सबक्लास के लिए विधियां (सबक्लासिंग के लिए तर्क यह है कि सरणी नियंत्रक को ड्रॉप के बारे में सूचित किया जाना चाहिए क्योंकि यह तालिका दृश्य के डेटासोर्स के रूप में कार्य करता है):
- (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id <NSDraggingInfo>) info row: (NSInteger) row dropOperation: (NSTableViewDropOperation)operation
उपरोक्त के लिए मेरा कार्यान्वयन वर्तमान में केवल लॉग को लिखता है और फिर एक बूलियन हाँ देता है।
- (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id <NSDraggingInfo>) info proposedRow: (NSInteger) row proposedDropOperation: (NSTableViewDropOperation) operation
आईबी में मेरे पास मेरे कस्टम एनएसएआरए कंट्रोलर उप-वर्ग को इंगित करने वाला सरणी नियंत्रक है।
परिणाम: कुछ भी नहीं। जब मैं डेस्कटॉप से एक पीएनजी को अपने टेबल व्यू पर खींचता हूं, तो कुछ भी नहीं होता है और फ़ाइल खुशी से वापस आती है। मुझे कुछ गलत करना होगा लेकिन समझ में नहीं आता कि क्या। मुझसे कहां गलती हो रही है?
धन्यवाद, लेकिन तालिका दृश्य अभी भी किसी भी ड्रैग/बूंद को स्वीकार नहीं करता है। फ़ाइंडर से खींचने वाली कोई भी फ़ाइल वापस उछालती है .... मैं कोको बाइंडिंग का उपयोग तालिका को अपने डेटा स्रोत से संलग्न करने के लिए करता हूं। – Roger
मैंने अपना जवाब अपडेट कर दिया है। आपको अभी भी डेटासॉर ऑब्जेक्ट को लागू करने की आवश्यकता है। –