سؤال

أريد أن أكتب تطبيق قد يحتوي على مستندات متعددة في نافذة واحدة عبر واجهة مبوبة. يجب أن أتجنب بنية NSDocument (قالب التقديم القائم على المستندات في كاكاو)؟ بقدر ما أستطيع أن أقول، فإنه يدعم نافذة واحدة أو أكثر لكل وثيقة فقط ولكن ليس العكس.

لقد كنت مصارعة مع هذا السؤال لفترة من الوقت وقد بنيت بالفعل الكثير من طلبي على بنية NSDocument لكن لا يمكنني معرفة طريقة جيدة لربط مستندات متعددة مع نافذة واحدة.

تحرير: أريد أن أحصل على Windows Document Windows بالإضافة إلى Windows Document Windows. في هذا المستوى من التعقيد، هل لا يزال يستحق القرصنة بنية NSDocument؟ هل أبل الكتابة Xcode (التي تعمل بهذه الطريقة) باستخدام بنية NSDocument؟

هل كانت مفيدة؟

المحلول

حاولت shehorning تطبيق NSDocument في واجهة مبوبة من نافذة واحدة قبل بضع سنوات، وانتهى بالإحباط حتى الآن بعد بضعة أشهر عدت وأعادت من قطع الوثيقية المستندية. ليس من المستحيل، لكن تنتهي بك الأمر في العمل حول العديد من المشكلات التي تشبه النتيجة النهائية تطبيق NSDocument مناسب. من الأفضل إعادة كتابة البتات التي تحتاجها، من نهاية المطاف مع الكثير من التعليمات البرمجية لمجرد تخريب أطر الكاكاو.

نصائح أخرى

لدي نفس النوع من المشروع - وثائق مستقلة مختلفة أريد أن أقدمها في نافذة واحدة، مع شريحة جانبية يسمح بالتبديل بين المستندات - لذلك قمت بتفتيش بعض الشيء.

لقد وجدت فقط تقدم مثيرة للاهتمام من خلال قراءة Cocoadev التطبيق المستند إلى الوثائق مع نافذة واحدة لجميع المستندات المرجعي. يبدو، من إجابة ميكترنت، أن استخدام NSDocument هو وسيلة قابلة للحياة للغاية للذهاب. تحتاج فقط إلى تصنيف NSDocumentController.

أحب أيضا فكرة أبي لاستخدام نافذة طفل بلا حدود.

باستخدام بنية NSDocument التي تعتمد على NSDocument ليست بالضرورة فكرة سيئة في هذه الحالة؛ ولكن قد يتطلب الكثير من هيكيري.

من المحتمل جدا أن لا يتعين عليك ذلك فحسب، بل هو فقط nsdocument nsdocument، ولكن أيضا نادرا ما يكون سيتوندوغلاستاني nsdocumentcontroller. بمجرد الانتهاء من ذلك، يجب أن تكون مسألة بسيطة لاختطاف وتجنب المكالمات إلى -MakeWindowControllers وغيرها من الطرق ذات الصلة بالنافذة، مما يتيح لك لف المستند "Windows" بأي أزياء من فضلك، ولكن لا يزال يحتفظ بفوائد المستند تطبيق مقرها.

تقنية أخرى، التي لم أحاول إلا أن أخططها، هي أن يكون لها نافذة بلا حدود لكل وثيقة. بهذه الطريقة تحتوي وثيقة واحدة على نافذة واحدة، والتي قد تكون أو لا تكون مرئية أو غير مرئية.

ثم، لديك نافذة غلاف تحتوي على حدود النافذة الفعلية، وأي عناصر تحكم للتبديل بينها نافذة / Windows بلا حدود مرئية. نافذة المستند هي نافذة تابعة للفتل، والتي تضمن ربط كليهما عند نقل / تقليل نافذة / مغلقة / إلخ.

بالنسبة إلى كل نافذة مستندات بلا حدود، تتمتع نافذة Wrapper بإطلالة نائبة أنه، عند تغيير حجمها، ستقوم بتغيير حجم نافذة المستندات، وعند حقن عرض نافذة المستندات في سلسلة المستجيب (أي حدث أرسل إلى عرض العنصر النائب، سيتم إرساله إلى المستند عرض النافذة قبل أن يتم تمريره إلى منظر الوالدين للعنصر النائب).

لا تزال هناك بعض التفاصيل البسيطة للعمل بها، لكنني أعتقد أن هذا النهج سيعمل بشكل جيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top