2013-02-02 11 views
6

के माध्यम से एनएसटीबल व्यू संपादन योग्य नहीं बना सकता है। मैं एक साधारण एनएसटीबल व्यू (केवल पाठ) बनाने की कोशिश कर रहा हूं जहां पाठ को संपादित करने के लिए सेल दृश्यों पर क्लिक किया जा सकता है। यहां सभी ट्यूटोरियल और संबंधित प्रश्न बताते हैं कि यह स्वचालित व्यवहार है, लेकिन मुझे यह नहीं मिल रहा है।क्लिक

मुझे अपने प्रतिनिधि और डेटा-स्रोतों को जोड़ने में कोई परेशानी नहीं है; मैं सभी कोशिकाओं को प्रोग्रामेटिक रूप से पॉप्युलेट कर सकता हूं, और मैं यह समझ सकता हूं कि संपादन पर दर्ज किए गए नए टेक्स्ट के साथ क्या करना है। ... मैं संपादन के लिए खोलने के लिए टेक्स्ट बॉक्स नहीं प्राप्त कर सकता!

(NSTable कॉलम आईबी में के रूप में संपादित चिह्नित कर रहे हैं)

किसी भी सुराग के लिए धन्यवाद।

+0

ठीक है, कोई जवाब है, लेकिन किसी को भी इस बात की पुष्टि कर सकता है कि कम से कम यह संभव हो _should_, क्लिक करने के लिए/एक में एक सेल doubleclick एनएसटीबल व्यू जो संपादन के लिए टेक्स्टफील्ड खोलता है? मुझे आश्चर्य है कि मेरी एक्सकोड स्थापना टूट गई है या नहीं। प्रत्येक ट्यूटोरियल में मैं पा सकता हूं, इसे सामान्य व्यवहार के रूप में लिया जाता है जिसमें कोई स्पष्टीकरण नहीं होता है कि इसे कैसे बनाया जाए। धन्यवाद। –

+1

यह बदलता है कि यह डिफ़ॉल्ट व्यवहार नहीं है, न ही आईबी में वैश्विक रूप से सेट-सक्षम है। जब आप उन्हें अपने डेटा-स्रोत/प्रतिनिधि में बनाते हैं तो आपको संपादन योग्य होने के लिए प्रत्येक सेल को मैन्युअल रूप से कोड करना होगा। –

+0

मेरे पास एक ही प्रश्न है। यदि आप किसी आधिकारिक उत्तर में अधिक जानकारी प्रदान कर सकते हैं, तो यह शानदार होगा। – Brett

उत्तर

6

तालिका में देखें: viewForTableColumn प्रतिनिधि विधि मुझे विशेष रूप से प्रत्येक सेल को संपादन योग्य होने के लिए सेट करना था।

यह कुछ हफ्तों के उपयोग के बाद समस्या के बिना काम करता प्रतीत होता है, लेकिन मुझे अभी भी लगता है कि किसी भी तरह कम श्रमिक विधि होनी चाहिए।

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 


    NSTableCellView *cellView; 
    if([tableColumn.identifier isEqualToString:@"word"]) 
    { 
     wordCellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self]; 
     cellView = wordCellView; 
     [cellView.textField setEditable:YES]; // Make Cell Editable! 
    } 
} 
+0

इसे संपादन योग्य सेट करना मेरे लिए महत्वपूर्ण था! धन्यवाद! – Brett

+2

आपको अंत में 'cellView' वापस करने की आवश्यकता है? – Arc676

+0

महान विचार, लेकिन वास्तव में यह आवश्यक नहीं है; http://stackoverflow.com/a/28282459/341994 देखें। – matt

7

आप पाठ क्षेत्र सेल को चुनकर, और गुण निरीक्षक का उपयोग कर, जिसका शीर्षक था "व्यवहार" ड्रॉप डाउन मेनू के लिए नीचे स्क्रॉल और "संपादन योग्य" चुनें द्वारा इंटरफ़ेस बिल्डर में ऐसा कर सकते हैं।

यह अकेले आप व्यक्तिगत कोशिकाओं पर डबल-क्लिक करने में सक्षम होंगे और उन्हें एक संपादन योग्य टेक्स्टफिल्ड बनने में सक्षम होंगे। setObjectValue: forTableColumn: पंक्ति:

[देखें एप्पल डॉक्स - (शून्य) tableView :

संपादनों की एक प्रभाव हो बनाने के लिए, आप भी NSTableViewDelegate प्रोटोकॉल से निम्न विधि को लागू करना होगा यह फ़ंक्शन] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/NSTableViewDataSource/tableView:objectValueForTableColumn:row :)

सामान्य रूप से, इस विधि को उस ऑब्जेक्ट में लागू करना होगा जिसे आपने NSTableView ऑब्जेक्ट के प्रतिनिधि के रूप में सेट किया है।

[प्रतिनिधियों पर एप्पल डॉक्स देखें स्थिति में आप उन्हें की समीक्षा चाहते हैं] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18)

+0

मेरा मानना ​​है कि यद्यपि आपके द्वारा प्रदान किए गए लिंक आपके उत्तर के अनुरूप हो सकते हैं, लेकिन अब ऐप्पल प्रलेखन का कहना है कि आपके उत्तर में निर्दिष्ट तकनीक केवल सेल-आधारित तालिका दृश्यों के लिए थी। अब, ऐप्पल अनुशंसा करता है कि हम व्यू-आधारित टेबल दृश्यों का उपयोग करें और प्रतिनिधि विधि का उपयोग करने के बजाय, - (शून्य) तालिका दृश्य: setObjectValue: forTableColumn: पंक्ति: उन मानों को सेट करने के लिए जिन्हें हम लक्ष्य/क्रिया का उपयोग करते हैं। क्या कोई मुझे बता सकता है कि उपयोगकर्ता को तालिका के मूल्यों को कैसे संपादित करना है और लक्ष्य/क्रिया का उपयोग करके उन मानों को वापस अपने मॉडल में प्राप्त करें? – Kaydell

संबंधित मुद्दे