मेरे पास एक ऐसा एप्लिकेशन है जो कई एनएस दस्तावेज़ों को खोलने की अनुमति देता है। इस एप्लिकेशन में एक एकल उपयोगिता विंडो है जिसमें कुछ कार्यक्षमता है जो मैं सामने के दस्तावेज़ पर लागू करना चाहता हूं।साझा उपयोगिता विंडो और सामने की दस्तावेज़ विंडो से बांधने का एक अच्छा तरीका क्या है?
मैं यहां बाइंडिंग का उपयोग करने की कोशिश कर रहा हूं, इसलिए यह चाल है कि उपयोगिता विंडो के उपयोगकर्ता इंटरफ़ेस को सबसे ऊपर दस्तावेज़ में साफ-सफाई कैसे करें। लक्ष्य यह है कि फिर सबसे आगे की दस्तावेज़ विंडो स्विच करने से उपयोगिता विंडो में दृश्य अपडेट हो जाएगा; नियंत्रण जो दस्तावेज़ के मॉडल में राज्य में परिवर्तन के समय उचित रूप से अपडेट किए जाएंगे,
ऐसी खिड़की से कार्यों को भेजने के लिए, केवल पहले उत्तरदाता का उपयोग करना आसान है; दस्तावेज़ ऑब्जेक्ट प्रतिक्रियाकर्ता श्रृंखला के माध्यम से कार्यों को रोक सकता है। लेकिन मुझे इससे अधिक चाहिए, और निश्चित रूप से आप पहले उत्तरदाता से बंधे नहीं जा सकते हैं।
कुछ विचारों मेरे पास है:
- साझा खिड़की के लिए मेरे निब में एक वस्तु नियंत्रक डाल दिया। जब कोई दस्तावेज़ विंडो सामने की स्थिति बदलती है, तो उस बाध्यकारी की सामग्री को बदलें। इसका एक नुकसान यह है कि अगर मेरे पास एक और प्रकार की उपयोगिता खिड़की थी, तो मुझे दस्तावेज़ विंडो से बाइंडिंग को उस यूटिलिटी विंडो में भी जोड़ना होगा!
- एप्लिकेशन प्रतिनिधि में एक एक्सेसर बनाएं जो विंडो सूची को घुमाने के द्वारा सबसे बड़ी दस्तावेज़ विंडो प्राप्त करता है। मेरी यूटिलिटी विंडो सिर्फ एप्लिकेशन प्रतिनिधि की विधि से जुड़ी होगी। यहां एक नुकसान यह है कि यह केवीओ अनुपालन नहीं है
- आवेदन प्रतिनिधि में एक गेटटर और सेटर निर्धारित करने के लिए (और शायद केवीओ-अनुरूप होने के लिए सेट किया गया है? क्या यह समझ में आता है?) सामने वाला दस्तावेज़। विंडो विंडो अधिसूचनाओं का उपयोग करें जब एक विंडो मुख्य स्थिति खो देता है तो उचित मूल्य पर एक ivar सेट करें। अपडेट: मैं अभी इसका उपयोग कर रहा हूं, और यह वास्तव में बहुत साफ दिखता है। मैंने विंडोडिडब्यूमेनमेन से मेरी डॉक विंडो की अधिसूचना को सेट किया है और इसे विंडो विल्लक्लोस में साफ़ करें (यदि यह वर्तमान मान है)। जब तक कोई बड़ी आपत्ति नहीं होती है, तो शायद यह वह दृष्टिकोण है जिसका मैं उपयोग करूंगा।
- One idea mainWindow.windowController.document से जुड़ना था ... यह करीब आता है, सिवाय इसके कि जब मेरी साझा विंडो मुख्य हो जाती है, तो यह बाध्यकारी दूर हो जाता है। तो वास्तव में मुझे सबसे आगे दस्तावेज़ विंडो के नियंत्रक (और दाएं वर्ग के) को खोजने की आवश्यकता है।
इनमें से कोई भी बिल्कुल सही नहीं लगता है। क्या ऐसा करने का कोई बेहतर तरीका है कि मुझे याद आ रही है?
समस्या यह है कि जब उपयोगिता विंडो मुख्य होती है। मैं उपयोगिता खिड़की के नीचे सबसे बड़ी दस्तावेज़ विंडो चाहता हूँ। – danwood
उस स्थिति में, आप इसका उपयोग नहीं कर सकते हैं या पीटर के सुझाव - [NSDocumentController currentDocument] को देखने का सुझाव नहीं दे सकते। अपने ऐप की मुख्य विंडो का निरीक्षण करें और कुछ यूएसपीप्लिकेशन प्रॉपर्टी सेट करें, उस मामले को छोड़कर जहां आपकी यूटिलिटी विंडो सामने आती है। –
कहा जा रहा है, क्या कोई कारण है कि आप यहां एनएसपीनल का उपयोग नहीं करते हैं? –