2009-07-12 13 views
7

मैं एक ऐसा एप्लीकेशन लिखना चाहता हूं जिसमें एक टैबड इंटरफ़ेस के माध्यम से एक ही विंडो में एकाधिक दस्तावेज़ हो। क्या मुझे NSDocument आर्किटेक्चर (कोको दस्तावेज़-आधारित एप्लिकेशन टेम्पलेट) से बचना चाहिए? जहां तक ​​मैं कह सकता हूं, यह प्रति दस्तावेज़ केवल एक या अधिक विंडो का समर्थन करता है लेकिन इसके विपरीत नहीं।कोको में एकल विंडो में एकाधिक दस्तावेज़

मैं थोड़ी देर के लिए इस प्रश्न के साथ कुश्ती कर रहा हूं और एनएसडी दस्तावेज़ आर्किटेक्चर पर अपना अधिकांश एप्लिकेशन पहले से ही बना चुका हूं लेकिन मैं एक ही विंडो के साथ कई दस्तावेज़ों को जोड़ने का एक अच्छा तरीका नहीं समझ सकता।

संपादित करें: मैं मूल दस्तावेज़ विंडोज़ के अलावा प्रोजेक्ट दस्तावेज़ विंडो चाहता हूं। जटिलता के इस स्तर पर, क्या यह अभी भी NSDocument आर्किटेक्चर हैकिंग के लायक होगा? क्या ऐप्पल ने NSDocument आर्किटेक्चर का उपयोग कर एक्सकोड लिखा है (जो इस तरह से काम करता है)?

+0

ऐसा प्रतीत होता है कि एक्सकोड वास्तव में एनएसडी दस्तावेज़ का उपयोग करता है, लेकिन जिस विंडो में प्रोजेक्ट में एकाधिक टैब हैं, वह सिर्फ एक दस्तावेज़ (प्रोजेक्ट्स) – cobbal

+1

भी है, यह वास्तव में मजेदार टूल है जो कोको ऐप्स में चारों ओर पोक करने के लिए यह देखने के लिए कि वे इसे कैसे करते हैं एफ-स्क्रिप्ट है http://www.fscript.org/ – cobbal

+0

@ कोबाबल: दिलचस्प। क्या इसका मतलब है कि पाठ फ़ाइलों को एनएसडी दस्तावेज़ के रूप में प्रतिनिधित्व नहीं किया जाता है? – titaniumdecoy

उत्तर

3

मैंने कुछ साल पहले एक खिड़की टैबबंद इंटरफ़ेस में एक एनएसडी दस्तावेज़ ऐप को शॉहोर्निंग करने की कोशिश की, और कुछ महीनों के बाद मैं इतनी निराश हो गई और दस्तावेज़ आर्किटेक्चर टुकड़ों को दोबारा प्रतिक्रिया दी। यह असंभव नहीं है, लेकिन आप इतनी सारी समस्याओं के आसपास काम करना समाप्त कर देते हैं कि अंतिम परिणाम मुश्किल एनएसडी दस्तावेज़ ऐप जैसा दिखता है। कोको ढांचे को तोड़ने के लिए बहुत सारे कोड के साथ समाप्त होने की तुलना में बस आपको आवश्यक बिट्स को फिर से लिखना बेहतर होता है।

+0

यह वास्तव में बहुत अधिक कोड नहीं है जैसा आप कर सकते हैं [यहां मेरी मार्गदर्शिका से पढ़ें] (http://cutecoder.org/programming/window-multiple-documents/)। – adib

4

एनएसडी दस्तावेज़-आधारित आर्किटेक्चर का उपयोग करना इस मामले में एक बुरा विचार नहीं है; लेकिन इसके लिए थोड़ा सा हेक्वेरी की आवश्यकता हो सकती है।

यह काफी संभावना है कि आपको न केवल एनएसडी दस्तावेज़ को उपclass करना होगा, बल्कि यह शायद ही कभी दुर्लभ रूप से उप-वर्गीकृत एनएसडी दस्तावेज़ नियंत्रक है। एक बार यह हो जाने के बाद, इसे हाइजैक करने और कॉल करने से बचने के लिए एक आसान मामला होना चाहिए -मेकविंडो कंट्रोलर और अन्य विंडो-संबंधित विधियों, जिससे आप जो भी फैशन कृपया "विंडोज़" दस्तावेज़ को लपेटने की अनुमति देते हैं, लेकिन फिर भी दस्तावेज़ के लाभों को बनाए रखते हैं- आधारित आवेदन।

2

एक और तकनीक, जिसे मैंने अभी तक कोशिश नहीं की है, लेकिन योजना है, प्रत्येक दस्तावेज़ के लिए एक सीमाहीन खिड़की है। इस तरह एक दस्तावेज़ में एक खिड़की होती है, जो दिखाई दे सकती है या नहीं भी हो सकती है।

फिर, वास्तविक विंडो सीमा वाली एक रैपर विंडो है, और किन सीमा रहित दस्तावेज़ विंडो/विंडो के बीच स्विच करने के लिए कोई भी नियंत्रण दिखाई देता है। दस्तावेज़ विंडो रैपर की एक बाल खिड़की है, जो सुनिश्चित करता है कि खिड़की को स्थानांतरित/छोटा/बंद/आदि होने पर दोनों को जोड़ा जाएगा।

प्रत्येक सीमा रहित दस्तावेज़ विंडो के लिए, रैपर विंडो में प्लेसहोल्डर दृश्य होता है, जब आकार बदलता है, तो दस्तावेज़ विंडो का आकार बदल जाएगा, और प्रतिक्रियाकर्ता श्रृंखला में दस्तावेज़ विंडो के दृश्य को इंजेक्ट करेगा (प्लेसहोल्डर दृश्य में भेजे गए किसी भी ईवेंट को, प्लेसहोल्डर के मूल दृश्य पर जाने से पहले दस्तावेज़ विंडो के दृश्य में भेजा गया)।

अभी भी काम करने के लिए कुछ मामूली विवरण हैं, लेकिन मुझे लगता है कि यह दृष्टिकोण अच्छी तरह से काम करेगा।

+1

बहुत दिलचस्प सुझाव। – KPM

5

मेरे पास एक ही तरह का प्रोजेक्ट है - अलग-अलग स्वतंत्र दस्तावेज जिन्हें मैं एक खिड़की में पेश करना चाहता हूं, एक साइडबार के साथ जो दस्तावेजों के बीच स्विचिंग की अनुमति देता है - इसलिए मैंने खुद को खोजना थोड़ा सा किया है।

मुझे कोकोदेव के Document Based App With One Window For All Documents संदर्भ पढ़कर एक दिलचस्प लीड मिली। ऐसा लगता है कि माइकट्रेंट के जवाब से, एनएसडी दस्तावेज का उपयोग करना एक बहुत ही व्यवहार्य तरीका है। आपको केवल NSDocumentController subclassing की आवश्यकता है।

मुझे सीमाहीन बाल विंडो का उपयोग करने के लिए Abhi's idea भी पसंद है।

+1

पहला लिंक टूटा हुआ है – rraallvv

+1

लिंक फिक्स्ड। – KPM

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