2012-11-19 32 views
11

के लिए मॉडल में सहेजना मैंने मुख्य विंडो पर NSOutlineView के साथ एक छोटा दस्तावेज़ आधारित एप्लिकेशन शुरू किया। मैंने मॉडल मॉडल में एनएससीओडिंग प्रोटोकॉल का उपयोग करके फ़ाइलों में अपना मॉडल सहेजा और सब कुछ ठीक है।विंडो रेज़्यूमे सुविधा के साथ खो गया, उपयोगकर्ता वरीयताओं में स्वत: सहेजना और NSDocument

अगला मैं उपयोगकर्ता इंटरफ़ेस (विंडो आकार और स्थिति, रूपरेखा दृश्य, चयन, ... में विस्तारित आइटम) को सहेजना चाहता था और मुझे शेर में फिर से शुरू की गई रेज़्यूमे सुविधा मिली।

तो मैं इसे लागू करने की कोशिश की, मैं, मुख्य विंडो और रूपरेखा को देखने के लिए एक स्वतः सहेजना नाम जोड़ा autosaveExpandedItems गुण सेट और outlineView कार्यान्वित: रूपरेखा को देखने के डेटा स्रोत में विधि: itemForPersistentObject: और outlineView: persistentObjectForItem।

यह काम करता है लेकिन जब मैं एक और फ़ाइल खोलता/खोलता हूं तो इसे बंद करें, विस्तारित आइटम अन्य फ़ाइलों की स्थिति बंद फ़ाइल की स्थिति के साथ सेट की जाती है।

ऐसा लगता है कि ऐप सभी दस्तावेजों के लिए केवल एक विंडो बचाता है, न कि प्रति दस्तावेज़ एक विंडो।

मैं ऑटोसवे और फिर से शुरू करने के साथ थोड़ा सा खो गया हूं, क्या यह वही सुविधा या दो विशेषताएं पूरी तरह से अलग है?

क्या मैं इसे विंडो स्थिति को सहेजने के लिए उपयोग कर सकता हूं या इसे अपने मॉडल में सहेजने की आवश्यकता है?

आप

उत्तर

0

धन्यवाद मुझे लगता है इस बारे में 3 साल बहुत देर हो चुकी है, लेकिन शायद यह किसी को जो यहाँ समाप्त होता है में मदद मिलेगी।

मैं अभी तक कोई कोको विशेषज्ञ या पेशेवर मैक डेवलपर नहीं हूं (अभी भी सीख रहा हूं), इसलिए मुझे डर है कि मैं केवल थोड़ी सी अंतर्दृष्टि प्रदान कर सकता हूं (दस्तावेज़-आधारित ऐप पर काम कर रहा हूं)।

यह मामला हो सकता है कि प्रति विंडो और प्रति नियंत्रण आधार पर बचत स्थिति डेटा को कार्यान्वित करने के लिए यह केवल एक ही उदाहरण पर लगा रहा है (क्योंकि यह सभी xibs में पहले से लोड हो चुका है और एक एकल ऑटोसवे नाम से जुड़ा हुआ है), लेकिन मैं इसके बारे में गलत हो सकता था। कोई भी जो अधिक जानबूझकर है मुझे सही करने के लिए स्वतंत्र है।

शायद अपने राज्य की जानकारी को विंडो के बजाय NSDocument स्तर पर आज़माएं और सहेजें, और फिर अपने दस्तावेज़ डेटा से खींचने के लिए window(window: NSWindow, willEncodeRestorableState state: NSCoder) और window(window: NSWindow, didDecodeRestorableState state: NSCoder) लागू करें।

आप, ज़ाहिर है, आसानी से दस्तावेज़ वर्तमान विंडो के लिए उपयोग कर सकते हैं: view.window?.windowController?.document as? YourNSDocumentSubclass

यह कम या ज्यादा मैं क्या कर रहा है, और यह अब तक का वादा किया जा रहा है। अन्य वास्तुशिल्प गुरु अधिक अंतर्दृष्टि प्रदान कर सकते हैं।

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

  • कोई संबंधित समस्या नहीं^_^