سؤال

أقوم بتطوير تطبيق iOS وأواجه بعض المشكلات التي تقرر كيفية التعامل مع مشكلة.

أنا أستخدم اثنين من uitableViewControllers لعرض طرق عرض مختلفة من نفس البيانات. إحداها قائمة رئيسية ، والآخر يحتوي فقط على عناصر يتم تمييزها على أنها "المفضلة". كما أن العناصر ذات ارتفاع متغير ، لذا فأنا أستخدم "HeightForrowatIndexPath" للإشارة إلى ارتفاع كل عنصر. المشكلة هي السرعة ، عندما أقوم بالتبديل من عرض إلى آخر ، يجب تحديثه لعرض التغييرات التي تم إجراؤها في الآخر (مفضل/غير متميز).

الحل #1:

إعادة تحميل البيانات في كل مرة يصبح فيها عرض الجدول مرئيًا. هذا لا يعمل بشكل جيد لأنه على الرغم من أن البيانات يتم عرضها باستخدام التحميل البطيء ، إلا أن "HeightForrowatIndexPath" يتم استدعاؤه لكل عنصر قبل تحميل أي بيانات ، وبطيئة. على جهاز iPhone 4 الخاص بي ، تستغرق القائمة التي تضم حوالي 300 عنصر حوالي أربع ثوانٍ ، حتى إذا تم تخزين قيم الارتفاع (عنق الزجاجة ، لا يطبق الارتفاع ، وليس استرداده).

 

الحل #2:

التلاعب يدويًا بالجداول عند إجراء التغييرات. لم أحاول هذا ، لكن من المحتمل أن يكون عربات التي تجرها الدواب. افكارك؟

 

الحل #3:

باستخدام نظام نوع الإخطار لإخطار جدول التحديثات الأخرى بالعناصر التي قد يتم تحميلها حاليًا. لم أجرب هذا ، لأنه يبدو أنه على القمة وقد لا يعمل على الإطلاق.

هل يعرف أي شخص طريقة سهلة لإظهار عرضين لنفس البيانات؟

لا يوجد حل صحيح

نصائح أخرى

يمكنك إعادة تحميل الصفوف N مع RELOADROWSATINDEXPATHS: withRowanimation. لم أفعل ذلك أبدًا ، لكنني أعتقد أنه موجود لأنه أسرع ، لذلك قد ترغب في تجربته.

على ارتفاع: شيء ، يمكنني أن أتذكر القراءة في مستندات Apple أن هذه الوظيفة هي بالفعل قاتل للأداء. ربما يمكنك أن تأخذ أقصى ارتفاع للصفوف ، وتعيين ذلك في uitableview.rowheight؟

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