ايفون:عرض DataGrid المخصص أو الفئة الفرعية UITableView أو غير ذلك؟
-
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
وثمة بديل آخر قد يكون هذا دائرة الرقابة الداخلية شبكة البيانات المكون - انها ليست حرة، ولكن كامل تماما المواصفات، مثل الحذف والحدود التوالي الرسوم المتحركة / الألوان التخصيص
.وأنا فقط للإجابة عن سؤال مثل هذا واحد - هناك عدد قليل من الخيارات التي وجدت:
https://github.com/AlanQuatermain/AQGridView (مجانا)
http://ioscomponents.com/Home/Products (تجارية - الكثير من الميزات 29 USD)
HTTPS: // شبكة الاتصالات العالمية. developergarden.com/en/marketplace/components/details/cmp/ios-data-grid-table-view (والتجاري 129 USD)
http://www.binpress.com/ التطبيق / عمودي أفقي، التمرير datagrid مقابل دائرة الرقابة الداخلية / 1082 (التجاري)