كيف يمكنني تطبيق عرض مصغرات مصغرة للاختيار المستخدم في الكاكاو؟
-
13-09-2019 - |
سؤال
لدي ما اعتقدت أنه حاجة بسيطة جدا لكنني لست متأكدا من كيفية التنفيذ.
عند نقاط مختلفة في واجهة بلدي، يطلب من المستخدم إجراء مجموعة مختارة من شيء ما بصرية (مثل اختيار تخطيط لصفحة أو خيار اللون.) هذه الاختيارات مصنوعة من مجموعة محددة مسبقا من الخيارات. عادة كنت تستخدم nspopupbutton، أو ربما nstableview، ولكن أود المستخدم أن يرى الصور المصغرة لكل خيار التحديد. يجب أن تكون هذه الصور المصغرة حجما لائقا أيضا - على الأقل 100x100 بكسل. يجب أيضا أن تكون كل مصغرة مصحوبة بتسمية نصية. مطلوب فقط اختيار واحد في وقت واحد.
أبل تنفذ شيئا ما مثل هذا في IWeb:
iweb http://img187.imageshack.us/img187/5744/iweb.jpg.
بالطبع، كنت معتادا على رؤية شيء مثل هذا مع الرموز الصغيرة:
أعتقد أن NSCollectionView هو المكان المناسب للبدء، لكنني لم أر هذا فقط على الإطلاق المستخدم في سيناريوهات أكثر تعقيدا (على سبيل المثال: عرض محتويات الدليل، ودعم السحب والإفلات، وما إلى ذلك) لذلك، معظم الرمز الذي وجدته معقدة إلى حد ما.
هل هناك حل أبسط لملء هذا الرأي بالبيانات الثابتة المحددة مسبقا والسماح فقط باختيار بسيط؟ بمعنى آخر، أبحث عن وظيفة زر منبثقة ولكن واجهة مستخدم مختلفة.
تحديث: الحل
اعتدت IkimageBrowser، كما هو مقترح. هذا البرنامج التعليمي كان مفيدا جدا. في IB: أنا فقط جعلت ikimageBrowser في واجهتي، ملفوفة في عرض التمرير، وجعلها مصدر البيانات لكائن المتصفح. في التعليمات البرمجية: تنفيذ بروتوكول مصدر البيانات في وحدة التحكم الخاصة بي مثل البرنامج التعليمي، قم بتعيين المسموح بالسماح والسماد المسموح به إلى NO، أنشأ كائن صورة مخصص باستخدام تمثيل صورة URL تماما كما هو موضح في البرنامج التعليمي.
ثم، للحصول على التحديد، كتبت الطريقة التالية التي يجب تشغيلها عند النقر فوق الزر "موافق":
NSIndexSet *retval = [imageBrowser selectionIndexes];
NSInteger i = [retval firstIndex]; //the index of the selection. Corresponds to index in my array data source
NSString* path = [[styleViewData objectAtIndex:i] imageRepresentation]; //path to selected image, if you need it
البرنامج التعليمي مفيدا للغاية - فقط تجاهل الأشياء حول إضافة الصور والتكبير المتزلجون ومثل هذا.
المحلول
تريد ikimageBrowserview.