2012-06-25 17 views
5

मैं की NSButton की स्थिति में बूलियन enabled संपत्ति को बांधना चाहता हूं। मैंने पहले ही कस्टम NSValueTransformer जोड़ने का प्रयास किया है जो NSButton की स्थिति को NSNumber में बदल देता है। हालांकि, उस परिदृश्य में पाठ फ़ील्ड किसी कारण से हर समय अक्षम होते हैं। मेरा दूसरा दृष्टिकोण: खराब होने में भी NSValueTransformerBOOL जैसे प्राइम प्राइमेटिव प्रकार प्रदान नहीं करता है।कोको: NSCellStateValue को बुलियन संपत्ति कैसे बांधें?

उदाहरण:
स्क्रीनशॉट एक उदाहरण है क्योंकि चेकबॉक्स राज्य NSOnState है जिसमें पाठ फ़ील्ड अक्षम हैं दर्शाता है। मैं भी इस राज्य में लेबल बांधना चाहता हूं।

Disabled text fields

इसके अलावा, यह सुविधाजनक हो सकता है, अगर मैं एक "अक्षम पाठ" सेट कर सकते हैं इंटरफ़ेस बिल्डर में। उपर्युक्त उदाहरण में मैंने संबंधित वर्ग में टेक्स्ट सेट किया था।


संपादित करें:

मैं के लिए मॉडल कुंजी पथ रूप self.anonymousLoginCheckbox.state सेट खाते पाठ क्षेत्र के संपत्ति सक्षम होना चाहिए। पासवर्ड टेक्स्ट फ़ील्ड के लिए समान। हालांकि, यह काम नहीं करता है।

Interface Builder Binding


अद्यतन:

मैं एक example project available on GitHub showing the implementation कृपया निकोलस Bachschmidt द्वारा वर्णित बनाया।

उत्तर

13

NSButton कुंजी state के लिए केवीओ अनुपालन नहीं है। कोको बाइंडिंग्स में मनाई गई संपत्ति में बदलाव होने पर अधिसूचनाओं को उत्सर्जित करने के लिए मनाई गई वस्तु की आवश्यकता होती है। NSButton के state उपयोगकर्ता के state, -[NSButton setState:] विधि (और स्वत: केवीओ नोटिफिकेशन) के लिए केवल एक रैपर है जब उपयोगकर्ता बटन पर क्लिक करता है (लेकिन -[NSCell setState:] है)। यदि आप self.anonymousLoginCheckbox.cell.state पर मॉडल कुंजी पथ सेट करते हैं, तो यह काम करेगा।

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