सबसे पहले, कुछ पृष्ठभूमि: मैं कोको में ओएस एक्स के लिए एक मास्टर-विस्तार इंटरफेस को लागू करने की कोशिश कर रहा हूं। यही है, मेरे पास एक खिड़की है जिसमें दो NSTableView
एस हैं जो दो अलग-अलग प्रकार की वस्तुओं को प्रदर्शित करते हैं। इस सवाल के लिए, मान लीजिए कि वे गोदामों और पैकेज हैं (एक उदाहरण चुनने के लिए जो मेरी वास्तविक समस्या के अनुरूप है।) पहले टेबल व्यू (गोदाम पर) में एक पंक्ति का चयन करना उस गोदाम से संबंधित पैकेजों की एक सूची प्रदर्शित करेगा दूसरी तालिका दृश्य। मॉडल भाग के लिए, मेरे पास वर्तमान में NSMutableArray
गोदाम वस्तुओं के गोदामों को बुलाया गया है, और प्रत्येक वेयरहाउस ऑब्जेक्ट में पैकेज ऑब्जेक्ट्स का NSArray
है। ध्यान देने योग्य बात यह है कि एनआईबी फाइलों को लोड करने के बाद वेयरहाउस चर संशोधित किया जाता है, इसलिए NSArrayController
को अधिसूचित किया जाना चाहिए।अलग एनआईबी फाइलों में एकाधिक विचारों के बीच एक एनएसएआरएआर कंट्रोलर साझा करना
अब, मैंने इसे व्यवस्थित करने का प्रयास किया है ताकि "मास्टर" अपने स्वयं के दृश्य वस्तु में हो, और "विस्तार" अपने स्वयं के दृश्य वस्तु में है। इसका मतलब है कि तीन एनआईबी हैं: एक वेयरहाउस व्यू एनआईबी, वेयरहाउस डेंटल व्यू एनआईबी, और मेनविंडो एनआईबी।
- WarehousesView निब एक WarehousesViewController (
NSViewController
से subclassed) और देखने में ही का एक उदाहरण में शामिल है। - वेयरहाउस डिन्यू व्यू एनआईबी में वेयरहाउसडिंट व्यू कंट्रोलर और दृश्य स्वयं का एक उदाहरण है।
- मेनविंडो एनआईबी में मुख्य विंडो, मेनविंडो कंट्रोलर का एक उदाहरण, और वेयरहाउस व्यू और वेयरहाउस डिनव्यू व्यू दोनों का एक उदाहरण शामिल है। विंडो में स्वयं
NSSplitView
है, और विभाजन दृश्य के दृश्य एनआईबी फ़ाइल में संबंधित दृश्य उदाहरणों से जुड़े हुए हैं।
जो मुझे मेरे सवाल की पहली छमाही के लिए लाता है:
1) इस विभाजित एक कोको आवेदन के लिए आवेदन विचारों का एक अच्छा तरीका है? मेरे लिए यह समझ में आता है, क्योंकि बाद के बिंदु पर गोदाम के बारे में अधिक जानकारी इसके पैकेज सूची की सूची के अलावा वेयरहाउस डेंशन व्यू में जोड़ा जा सकता है।
यह एक महत्वपूर्ण सवाल है, क्योंकि सब कुछ ठीक काम करता है अगर मैं दृश्य बनाने, सीधे विंडो में सभी नियंत्रण लगाने को छोड़ और कुछ NSArrayController
गोदामों और संकुल के लिए इसी उदाहरणों, एक ही निब फ़ाइल में सहित सब कुछ डाल दिया, है। मुझे सवाल के दूसरे भाग में पूछने की ज़रूरत नहीं है अगर मुझे इसे इस तरह से नहीं करना चाहिए।
प्रश्न की दूसरी छमाही मूल रूप से है:
2) मैं कहां रखना चाहिए NSArrayController
रों गोदामों और संकुल के लिए इसी अगर मैं इसे ऊपर वर्णित ताकि गुरु-विस्तार इंटरफेस अभी भी काम करता है के रूप में विभाजित? वर्तमान में मैं कोको बाइंडिंग मेरी गोदामों सरणी के लिए बाध्य करने के लिए NSArrayController
जरूरत है, और NSArrayController
गोदाम के चयन करने के लिए बाध्य करने की जरूरत है संकुल की सामग्री सरणी का उपयोग कर रहा है, तो किसी भी तरह गोदाम की सामग्री सरणी NSArrayController
मैंने कुछ चीजों की कोशिश की, और मैं पूरी तरह से काम करने के लिए कुछ भी नहीं मिला। विशेष रूप से, मैंने वेयरहाउस व्यू एनआईबी में गोदामों के लिए NSArrayController
और वेयरहाउस डिन्यू व्यू एनआईबी में पैकेज के लिए NSArrayController
डालने का प्रयास किया है। इस दृष्टिकोण के साथ समस्या यह है कि वे वेयरहाउस NSArrayController
के चयन में पैकेज NSArrayController
को बाध्य करने का कोई तरीका नहीं समझ सकते हैं।दूसरी चीज मैंने कोशिश की है (1) मेनविंडो एनआईबी में NSArrayController
एस दोनों को डालने, (2) उन NSArrayController
एस को मेनविंडो कंट्रोलर में आईबीओटलेट्स से जोड़ने, फिर (3) उन चर को अपने रचनाकारों के माध्यम से अपने संबंधित दृश्य नियंत्रकों को पास करना, (4) उन्हें केवीसी के माध्यम से व्यू कंट्रोलर में गुणों के रूप में उजागर करना, और (5) फ़ाइल के मालिक के माध्यम से सरणी नियंत्रक के दृश्य में आवश्यक तालिका कॉलम को बाध्य करना। परिणाम यह था कि कुछ भी दिखाई नहीं दिया, लेकिन कोई त्रुटि नहीं थी। यदि इनमें से एक दृष्टिकोण यह करने का पसंदीदा तरीका है, तो मैं यह देखने में सहायता के लिए अधिक जानकारी दे सकता हूं कि मैं इसे गलत तरीके से कर रहा हूं या नहीं।
अग्रिम धन्यवाद!
संपादित करें: मैं this related question पर देखने की थी, और वे अगर मैं इसे सही ढंग से समझ में आ प्रत्येक निब फ़ाइल के लिए NSArrayController
के अलग उदाहरणों का उपयोग किया लग रहा था, और कहा कि देखने के एक डिजाइन बिंदु से समझ बनाने के लिए नहीं लगता था, लेकिन शायद मैं गलत हूँ?