2011-12-02 21 views
5

का उपयोग कर एक मास्टर-विवरण ऐप बनाना, मैं आईओएस से आ रहा हूं और सबसे सरल मास्टर-विवरण ओएस एक्स ऐप बनाने की कोशिश कर रहा हूं लेकिन मुझे मुश्किल समय संक्रमण हो रहा है। अधिक विशेष रूप से, मैं वास्तव में यह नहीं समझ सकता कि मैं एनएसएआरएआरई कंट्रोलर का उपयोग कर एनएसटीबल व्यू के साथ कोर डेटा को कैसे एकीकृत करता हूं;NSTreeController, NSArrayController और कोर डेटा

एप्लिकेशन को वर्तमान में इस दिखता है: Contacts app

मेरे डेटा मॉडल इस तरह दिखता है:

enter image description here

आप यह बहुत आसान है देख सकते हैं। मैं स्रोत सूची में समूह का चयन करने में सक्षम होना चाहता हूं, फिर तालिका दृश्य में सभी युक्त व्यक्तियों को प्रदर्शित करें।

मैं NSOutlineView को एक साधारण एनएसएआरएआरई से कनेक्ट करने में कामयाब रहा हूं, लेकिन एनएसटीआर कंट्रोलर का उपयोग करके सभी ग्रुप ऑब्जेक्ट्स से कनेक्ट करने का सबसे अच्छा तरीका क्या है, और इसे सभी संपादन योग्य बनाते हैं?

उत्तर

3

NSArrayController जोड़ें और इसे अपने Group इकाई से कनेक्ट करें (इसे GroupController पर कॉल करें)। अपने बाएं स्रोत दृश्य के तालिका कॉलम का चयन करें और बाइंडिंग इंस्पेक्टर पर जाएं। Value अनुभाग का चयन करें और बॉक्स को चेक करके इसे GroupController पर बाध्य करें। Controller Key से arrangedObjects और Model Key Path से title पर बाध्यकारी को पूरा करें।

एक और NSArrayController (PersonsController) जोड़ें। बाइंडिंग इंस्पेक्टर पर जाएं और Content Set नामक अनुभाग का चयन करें। ड्रॉपडाउन सूची से अपने ग्रुप कंट्रोलर का चयन करें और PersonsController से GroupController पर बाध्य करने के लिए चेकबॉक्स को चेक करें। Controller Key से selection और Model Key Path से persons पर बाध्यकारी को पूरा करें। यह चयनित समूह से जुड़े व्यक्तियों को PersonsController

पर पुनर्प्राप्त करेगा, फिर आप अपनी विंडो के दाईं ओर एक टेबल दृश्य को PersonsController पर बाध्य कर सकते हैं। तालिका के प्रत्येक कॉलम को PersonsController (firstName, lastName) से कनेक्ट करें।

संपादन योग्यता आपकी व्यक्ति इकाई पर तालिका दृश्य के कॉलम स्तर पर सेट की जा सकती है।

संपादित करें: ओह, बस अपना प्रश्न दोबारा पढ़ें और आपको एक एनएसटीआर कंट्रोलर चाहिए। मुझे लगता है कि आप समूह नियंत्रक को प्रतिस्थापित कर सकते हैं - जो एक सादा NSArrayController है - एक NSTreeController के साथ। मुझे आपकी समूह इकाई में कोई पदानुक्रम नहीं दिख रहा है। Here एक वृक्ष नियंत्रक के लिए कोड के साथ अच्छा ट्यूटोरियल है जो पदानुक्रमों के साथ इकाइयों का समर्थन करता है।

EDIT2: एक और अच्छा ट्यूटोरियल ऐप्पल का SourceView उदाहरण है। यह दिखाता है कि एनएसटीआर कंट्रोलर का उपयोग करके स्रोत दृश्य कैसे सेट करें। यह डेटा स्रोत फ़ाइल आधारित NSDictionary से जुड़ा हुआ है लेकिन मेरे ट्यूटोरियल का उपयोग करके और मेरे उत्तर में आवश्यक बाइंडिंग का विवरण आपको उस काम को प्राप्त करने में सक्षम होना चाहिए।

https://developer.apple.com/library/mac/#samplecode/SourceView/Introduction/Intro.html

यह एक NSOutlineView NSTreeController द्वारा संचालित उपयोग करता है:

+0

ठीक है, मुझे जरूरी नहीं कि एक एनएसटीआर कंट्रोलर चाहिए, लेकिन मैं अपनी ग्रुप ऑब्जेक्ट्स को प्रदर्शित करने के लिए एक स्रोत सूची का उपयोग करना चाहता हूं, क्योंकि मैं उनके ऊपर "ग्रुप" हेडर चाहता हूं। क्या यह एक एनएसएआरएआर कंट्रोलर का उपयोग कर संभव है? ट्यूटोरियल इसके बारे में कुछ भी नहीं कहता है। – Rits

+0

नहीं, AFAIK मुझे पता है कि आपको NSOutlineView और NSTreeController का उपयोग करना होगा। मैंने उस ट्यूटोरियल का उपयोग करके अपना मास्टर/विस्तार ऐप बनाया और यह बहुत अच्छा काम करता है। ट्यूटोरियल वास्तव में दो नियंत्रकों का उपयोग करता है: एक एनएसएआरएआर नियंत्रक शीर्ष स्तर की वस्तुओं को पुनर्प्राप्त करने के लिए (एक predicate parent == nil का उपयोग करके) और फिर वास्तविक पेड़ को प्रदर्शित करने के लिए एक NSTreeController। – Roger

0

इसके अलावा, उदाहरण कोड SourceView पर एक नजर है।