2012-06-04 22 views
5

के लिए बाइंडिंग कैसे सेट करें मैं पूर्वनिर्धारित मानों में से एक को NSPopUpButton का चयन करना चाहता हूं। इसे आसान बनाने के लिए, ब्लॉग ऐप की कल्पना करें: मेरे पास BlogPost और Category इकाइयां (कोर डेटा, हालांकि इससे कोई फर्क नहीं पड़ता) और प्रत्येक BlogPost ऑब्जेक्ट में Category ऑब्जेक्ट्स (category संपत्ति के माध्यम से) का एक लिंक है।NSPopUpButton

  • बाध्य करने के लिए: categoriesArrayController

    मेरे पास करने के लिए उपयोगकर्ता NSPopUpButton के माध्यम से वर्ग बदलने के लिए, तो मेरे XIB में, मैं NSArrayController कि सभी संभव श्रेणियों रखती है और मैं बाँध बटन के सामग्री को मान चाहते हैं

  • नियंत्रक कुंजी: arrangedObjects
  • मॉडल कुंजी: शीर्षक

यह अच्छी तरह से सभी श्रेणियों के शीर्षक के साथ पॉप अप करता है। मैं भी बाध्य कर सकते हैं को वस्तु चयनित:

  • बाध्य करने के लिए: blogObjectController (या सीधे Blog वस्तु को)
  • नियंत्रक कुंजी: चयन
  • मॉडल कुंजी: श्रेणी

यह काम करता है और सही श्रेणी पॉप अप में चयनित है, हालांकि changi एनजी चयन उस श्रेणी को नहीं बदलता है जिसके अंतर्गत ब्लॉग पोस्ट दायर किया जाता है, लेकिन इसके बजाय पोस्ट श्रेणी का शीर्षक चयनित मूल्य में बदल जाता है।

ऊपर बाइंडिंग यह वास्तव में समझ में आता है को देखते हुए, तो मेरे अगले कदम केवल arrangedObjects (कोई मॉडल कुंजी), इसी तरह चयनित ऑब्जेक्ट के लिए पॉप अप की सामग्री मूल्यों के बंधन को बदलने के लिए किया गया था। यह काम करता है और बदलते चयन वास्तव में ब्लॉग पोस्ट के category को दूसरे में बदल देता है। लेकिन यह पॉप-अप मेनू में श्रेणी शीर्षक दिखाने नहीं है, लेकिन बजाय वर्ग (जो कोर में डेटा <Category 0x1002b6990> (entity: Category; id: .......) की तरह कुछ के साथ समाप्त होता की description को दर्शाता है।

कौन सा भी समझ में आता है, तो मैं कस्टम NSValueTransformer (गैर शुरू की - परिवर्तनीय)। यह पॉप अप मेनू में आइटम विवरण को हल करता है, लेकिन फिर चयन काम नहीं करता है। मैंने चयनित ऑब्जेक्ट बाइंडिंग पर ट्रांसफॉर्मर का उपयोग करने का भी प्रयास किया है, लेकिन यह सिर्फ मेरे पॉप अप को अक्षम करता है (शायद रिवर्स ट्रांसफॉर्म की आवश्यकता होगी, लेकिन यह काफी हद तक ट्रांसफॉर्मर जटिल होगा)

क्या मुझे कुछ स्पष्ट याद आ रही है - क्या यह संभवतः बाध्यकारी के साथ पूरी तरह से प्राप्त करने के लिए संभव है, बिना किसी अतिरिक्त कोड को पेश किए रोलर परत?

कोई भी स्वागत है!

पुनश्च: पाठ के ऊपर आशा है कि भावना :)

उत्तर

7

इस प्रकार मैं इसे की कोशिश करेगा बनाता है:

NSPopupButton के

:

  • बाइंड सामग्री रहे हैं: categoriesArrayController ControllerKey: arrangedObjects
  • बाइंड सामग्री मान: categoriesArrayController ControllerKey: arrangedObjects मॉडल कुंजी पथ: शीर्षक
  • बाइंड चयनित ऑब्जेक्ट रहे हैं: blogObjectController ControllerKey: (empty) मॉडल कुंजी पथ: content.category
+0

यह है कि, मैं अब याद रखें, धन्यवाद :) मैं उलझन में था * सामग्री मूल्य * अक्षम कर दिया गया था, केवल * सामग्री * की अनुमति थी। – Tom