2011-05-24 15 views
8

मैं एनएसबूटन और कोशिकाओं के बारे में ऐप्पल दस्तावेज के माध्यम से पढ़ रहा हूं और मैं वास्तव में दोनों के बीच भेद को समझ नहीं सकता। इस जटिलता को जोड़कर, ऐसा लगता है कि उनमें से दोनों के पास setTitle: आदि जैसी विधियों का एक बड़ा ओवरलैप है और मुझे यकीन नहीं है कि मुझे किसके उपयोग करना चाहिए।NSButtonCell बनाम NSButton

कोई भी बता सकता है कि बुनियादी अंतर क्या हैं?

धन्यवाद,
तेजा

उत्तर

8

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

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

इसी तरह, जब कोई उपयोगकर्ता नियंत्रण पर क्लिक करता है, तो नियंत्रण घटना को प्राप्त करता है और इसका अर्थ क्या है, लेकिन घटना के जवाब में कार्रवाई करने का कार्य सेल पर भेज दिया जाता है।

यदि आप विभिन्न नियंत्रण/सेल जोड़े (NSButton और NSButtonCell एक ऐसी जोड़ी होने के लिए दस्तावेज़ों को देखते हैं), तो आपको "कवर" विधियों का उल्लेख दिखाई देगा। इसका मतलब यह है कि नियंत्रण में उसके समकक्ष सेल के समान नाम होते हैं, जो बस सेल के माध्यम से कॉल करते हैं। यह आपके द्वारा उल्लिखित नकल का स्रोत है। जब आप इन तरीकों में से किसी एक का उपयोग करना चाहते हैं, तो उसे नियंत्रण पर कॉल करें - जोड़ी के सार्वजनिक चेहरे के रूप में, यह संभवतः सेल को किसी भी तरह से पूछेगा।

नियंत्रण और सेल प्रोग्रामिंग विषय मार्गदर्शिका में इंटरैक्शन का सबसे अच्छा ऐप्पल-प्रदान किया गया विवरण "How Controls and Cells Interact" है।


एक अभिनेता एक एजेंट gigs खरीदता है जो होने के अर्थ में।
यह सभी विचारों के सख्ती से सच नहीं है; यह वास्तव में NSResponder की एक विशेषता है, जिसमें NSView विरासत है।

+0

मुझे लगता है कि यह UIView और CALayer जैसा ही है? – onmyway133

-2

NSButton सेल ड्राइंग और व्यवहार के लिए बहुत अधिक cutomizable विकल्प है। मतभेद बेहतर, कक्षाएं वे से (NSButtonCell ActionCell वर्ग से विरासत के वारिस के रूप में देखा जाता है, जबकि NSButton NSControl वर्ग से विरासत

प्रलेखन बेहतर पर एक नज़र डालें:।

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSButton_Class/Reference/Reference.html

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSButtonCell_Class/Reference/Reference.html

आप आप कैसे चाहते हैं। बटन खींचा और व्यवहार किए जाने की, तो इसका एक सरल बटन आप चाहते हैं, NSButton का उपयोग के आधार पर चयन करना चाहिए।

+0

मुझे यकीन नहीं है कि मैं आपका अनुसरण करता हूं। 'NSButtonCell'' NSButton' का हिस्सा नहीं है? मुझे लगता है कि 'एनएसबटन' आवंटित करना और '[बटन सेल]' को कॉल करना 'NSButtonCell' से जुड़ा हुआ है। यही वह था जो मैं उलझन में था। –

2

कुछ अंश से Cocoa Programming for OS X: The Big Nerd Ranch Guide

"एक सेल नियंत्रण के कार्यान्वयन विवरण संभालती है। अधिकांश भाग के लिए, सेल के गुण और विधियां समान गुणों और समान नियंत्रण में विधियों द्वारा "कवर" होती हैं। उदाहरण के लिए, जब आप किसी लेबल पर शीर्षक बदलते हैं, तो लेबल का सेल काम कर रहा है, लेकिन आप लेबल की स्ट्रिंग Value संपत्ति से सहभागिता करते हैं।

कोशिकाएं कोको में एक लंबा इतिहास है। वे मूल रूप से प्रदर्शन समस्याओं के समाधान में जोड़े गए थे: नियंत्रण के कई बुनियादी कार्यों को सेल को सौंप दिया गया था, जो उन्हें नियंत्रण से अधिक कुशलतापूर्वक कर सकता था।

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

0

NSButtonCell का यूजर इंटरफेस को लागू करने के लिए प्रयोग किया जाता NSActionCell का एक उपवर्ग है पुश बटन, स्विच, और रेडियो बटन। इसका उपयोग किसी भी अन्य क्षेत्र के लिए भी किया जा सकता है जिसे क्लिक किए जाने पर लक्षित करने के लिए एक संदेश भेजने के लिए डिज़ाइन किया गया है। NSButtonNSControl का उप-वर्ग एक NSButtonCell का उपयोग करता है। स्विच या रेडियो बटन के समूह बनाने के लिए, NSMatrix का उपयोग NSButtonCell एस के सेट को रखें।