سؤال

أحاول أن أقرر أي طريق لأخذ تطبيق تطبيق Snow Leopard الخاص بي. أولا، يجب أن مقدمة مع الاختلافات الواضحة:

NSTableView يمكن أن يكون لديك أعمدة متعددة من البيانات لتمثيل أجزاء مختلفة من نفس عنصر "البيانات (صف) حيث NSCollectionView يمكن عرض شبكة من البيانات أيضا، ولكن كل صف + كومبو عمود هو عنصر خاص به. لأغراضي، افترض أنني أتعامل مع عمود واحد.

  1. بقدر ما أستطيع أن أقول، NSCollectionView البنود NSViewيجب أن يكون كل شيء من نفس الأبعاد. أيضا، على عكس NSTableView, ، يتم نسخ عناصر CollectionView إلى NSCollectionView بدلا من توفيرها حسب الحاجة من قبل dataSource (أنا غير مؤكد عن هذا، يرجى تصحيح لي إذا كنت مخطئا).

  2. NSTableView الاستخدامات NSCellS إذا قررت تخصيص عرض الصفوف. كما NSCell ليس كذلك NSResponder, ، كيف يمكن لأحداث التعامل مع أحد الأحداث (إذا أردت إضافة نوع من الملحقات إلى الخلية، مثل كيفية عمل الأسهم في iTunes (على الرغم من أن iTunes كربون). لقد رأيت بعض NSCell فئة فئة في IB التي يبدو أنها تعادل NSControl إخوة، ولكن ماذا لو كنت أريد أن يكون MySweetView الكائنات في NSCell?).

  3. يبدو أن كلاهما يعملان حول الشيء نفسه مع احترام الارتباطات، صحيح؟

  4. أخيرا، NSCollectionView يبدو أن اللعب بشكل جيد مع الرسوم المتحركة لعناصرها (لإعادة ترتيب العناصر، أو تصفيةها على سبيل المثال). علبة NSTableView هل هذا مع صفوفه؟

أي شيء آخر يجب أن أعتبر؟

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

المحلول

  1. الفرق هنا هو أنه في عرض الجدول، كل صف هو عنصر واحد، وتظهر الأعمدة جوانب مختلفة (خصائص) من هذا البند. في عرض المجموعة، كل تقاطع عمود الصف هو عنصر واحد.
  2. لم أفعل هذا، ولكن حاول التنفيذ tableView:didClickTableColumn: في الجدول عرض المندوب. هذه الطريقة جديدة في 10.6. سوف تحتاج إلى الحصول على [NSApp currentEvent], ، وربما تمريرها إلى طريقة في خلية العمود.
  3. مع عرض الجدول، يمكنك ربط العمود؛ لا ترتبط العرض (وليس لتوفير المحتوى، على أي حال؛ أنت تقوم بربط طريقة العرض للأشياء مثل فهارس الاختيار). مع عرض مجموعة، لا توجد أعمدة (انظر # 1)، لذلك أنت دائما ترتبط العرض.
  4. رقم.

نصائح أخرى

Fwiw، nstableview هو جزء قديم جدا من AppKit، وهو Crufty قليلا.

إذا كنت جديدا في المنصة، فسوف أوصي بالحصول على رأسك حول NscollectionView أولا.

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