ارتباطات الكاكاو: الجمع بين العناصر الثابتة مع عناصر الملائكة الملزمة في nspopuputton

StackOverflow https://stackoverflow.com/questions/1248044

سؤال

أحاول أن أجعل منتقي اللون باستخدام NSPOPPUPBUTTON، وفي الجزء السفلي، أود خيار "مخصص ...". هل من الممكن تحميل الألوان من الصفيف، ثم تك فاصل البند "مخصص" في الأسفل؟ إذا كان الأمر كذلك، كيف؟

شكرا!

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

المحلول

يجب عليك حقا استخدام nscolorwell. بدلا من صياغة اليد الخاصة بك. أحد الأسباب التي تجعل Apple لديها واجهات غيانية متفوقة من المنصات الأخرى (خاصة Linux) لأن المطورين يستخدمون المكونات القياسية للقيام بهذا النوع من الأشياء. حجج مثل "لأنني أعتقد أنه يجعل الواجهة أكثر موجزة" هي الأسباب التي تجعل الأعرج مثال على كيفية تصميم واجهة المستخدم الرسومية.

ومع ذلك، فإن ما تحاول القيام به هو تحديد قائمة ديناميكية، بدلا من قائمة بحجم ثابت (كمرء قد يقوم به في interfacebuilder). يمكنك القيام بذلك عبر فئات NSMENU و NSMenuitem.

دليل وثائق المنظمة

ما عليك القيام به، بدلا من عرض القائمة عند الطلب، هو ملء ذلك عند بدء تشغيل التطبيق مع الصفيف الافتراضي. ثم، عند تغيير الصفيف (عبر كائنات النموذج الخاصة بك) يؤدي إلى إعادة إنشاء القائمة. بدلا من ذلك، فخ القائمة مع menuedsupdate: رسالة.

نصائح أخرى

لقد قمت بإنشاء popupbutton مماثلة، لكنني لم أقم بإرسال الألوان الافتراضية بعد إلى صفيف ثابت (على الرغم من أنني أعمل على ذلك الآن). هناك نوعان من apprauches هنا - كلاهما قد يعتبرون الخارقة من قبل النقيحين، لكنهم يحصلون على المهمة.

  1. Subclass NSPOPUPBUTTONCELL وتجاوز ATHERPOPUPPWITHFRAME لإضافة عناصر القائمة الخاصة بك. لم أحاول هذا بجانب العناصر الملزمة.

  2. الكائنات الصعبة "مخصص .." كائن في صفيفك، والحصول على عمل لوحة اللون المعروضة، إضافة عنصر جديد إلى الصفيف.

هذا ممكن مع الارتباطات اعتبارا من Mac OS X 10.5 باستخدام علامة "موضع المحتوى"؛ انظر إجابتي هنا:

عنصر فاصل في Nspopupbutton مع الارتباطات

عدم استخدام الارتباطات، لا. يمكنك القيام ب "مخصص ..." واحد بسهولة كافية، ولكن ليس الفاصل.

لماذا لا تستخدم nscolorwell، على أي حال؟

  1. تكوين الارتباطات الخاصة بك على NSPopupButton كل عادة
  2. في تكوين الارتباطات الخاصة بك ل NSPopupButton, ، تعيين Content Placement Tag قيمة 1

Content Placement Tag for the dynamic content

  1. في لوحة العمل، قم بتوسيع NSPOPPUPBUTTON وحدد NSMENU المرتبط NSPopupButton
  2. تأكد من أن لديك عنصرين في القائمة:

    • البند الأول الذي "يمثل" المحتوى الديناميكي. اضبط قيمة العلامة على 1 -> هذا مهم بالنسبة لإدراج المحتوى الديناميكي للربط في المكان المناسب. Menu Item to receive the right tag
    • العنصر الثاني سيكون عنصر القائمة "مخصص ...

اختياري: إضافة عنصر قائمة فاصل بين المحتوى الديناميكي والثابت:

  1. وضع الخاص بك ViewController كما مندوب ل NSMENU
  2. اجعلك ViewController أ NSMenuDelegate وإضافة التعليمات البرمجية التالية في ViewController:

    extension YourViewController: NSMenuDelegate {
    
        func menuNeedsUpdate(_ menu: NSMenu) {
    
        menu.insertItem(NSMenuItem.separator(), at: menu.numberOfItems-1)
        }
    }
    

والتي ستبادر ببساطة فاصلا بشكل صحيح بين محتوياتك الديناميكية وعنصر القائمة "المخصص ..."

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