ايفون:عرض DataGrid المخصص أو الفئة الفرعية UITableView أو غير ذلك؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

أرغب في إنشاء شبكة بيانات يتم تمريرها عموديًا وأفقيًا وتحتوي على رؤوس صفوف وأعمدة لاصقة (حتى تتمكن من تمرير البيانات أثناء عرض رؤوس الصفوف/الأعمدة).ما هي أفضل طريقة للقيام بذلك؟

لقد فكرت في إنشاء طريقة عرض DataGrid المخصصة الخاصة بي والتي تتعامل مع العرض الخاص بها، ولكن يبدو أن هذا يتطلب الكثير من العمل.يبدو أن إضافة UITableViews متعددة إلى UIScrollView قد ينجح، لكنني لا أعرف كيفية جعل الصف والعمود الأول ثابتين أثناء تمرير الباقي معًا.أو ربما يمكنني فئة فرعية UITableView وإضافة أعمدة إليها.

للحصول على مثال لشيء مشابه لما أبحث عنه، انظر http://www.roambi.com/.انقر على مثال SuperList وجرب العرض هناك.

لقد نجحت في إعادة إنشاء التأثير الذي أبحث عنه في UIWebView باستخدام جدول HTML عادي، وJavaScript مخصص، وCSS، ولكن الأداء على iPhone سيئ جدًا باستخدام هذه الطريقة.

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

المحلول

لا أعتقد أن الفئة الفرعية UITableView تتوافق جيدًا مع متطلباتك.ولكن يمكنك تكرار أنماط التصميم التي يستخدمها UITableView.سيؤدي هذا إلى تبسيط تطوير واستخدام طريقة العرض الخاصة بك.

سأتناول الأمر على هذا المنوال:

  • قم بتعريف بروتوكولات DataGridViewDelegate وDataGridViewDatasource التي تحاكي نظيراتها من UITableView.
  • DataGridView هي فئة فرعية من UIScrollView.لديها نوعان من الإيفارز delegate و datasource.
  • DataGridViewCell هي فئة فرعية من UIView تشبه UITableViewCell.
  • فئة على NSIndexPath مماثلة NSIndexPath(UITableView) مما يجعل من السهل استخدام مسارات الفهرس لمعالجة الصفوف والأعمدة والأقسام (اختياريًا، إذا كنت تريد تنفيذها).
  • يستدعي DataGridView أساليب مصدر البيانات numberOfRowsInDataGridView: و numberOfColsInDataGridView: وأساليب التفويض heightForCellAtIndexPath: و widthForCellAtIndexPath: (أو، إذا لم يتم تنفيذه، يستخدم الوضع الافتراضي cellWidth و cellHeight خصائص) لحساب حجم الشبكة وتعيين طرق عرض التمرير contentSize ملكية.
  • عندما يحتاج DataGridView إلى عرض نفسه أو عند تمريره، قم باستدعاء أسلوب مصدر البيانات dataGridView:cellAtIndexPath: للحصول على العرض الفرعي لكل خلية ليتم عرضها.أضف هذه كعروض فرعية.تنفيذ نظام إعادة استخدام الخلايا مثل UITableView.
  • ...

قد يبدو هذا كثيرًا من العمل ولكني أعتقد أنه ممكن.لست متأكدًا تمامًا من كيفية تنفيذ صفوف/أعمدة الرؤوس الثابتة (غير القابلة للتمرير) بشكل أفضل.

نصائح أخرى

وهذا قد يناسب احتياجاتك، مصنوع جيدا: https://github.com/AlanQuatermain/AQGridView

وثمة بديل آخر قد يكون هذا دائرة الرقابة الداخلية شبكة البيانات المكون - انها ليست حرة، ولكن كامل تماما المواصفات، مثل الحذف والحدود التوالي الرسوم المتحركة / الألوان التخصيص

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