أضف "التحميل الآن" قبل تحديد علامة التبويب UITabBarController؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

تستغرق إحدى علامات التبويب في UITabBarController بعض الوقت للعمل قبل أن يتم عرضها.

ما هي أفضل طريقة لعرض "يتم التحميل الآن" قبل أن يكمل جهاز التحكم في العرض عمله؟

لقد حاولت إعداد عرض "يتم التحميل الآن" في طريقة viewDidLoad الخاصة بعلامة التبويب viewController، ثم أقوم بالعمل في viewDidAppear، مع وضع علامة لعدم القيام بالعمل مرة أخرى في المرة القادمة من خلال viewDidAppear.

ومع ذلك، لا أرى أبدًا عرض "التحميل الآن" ...يجب إجراء بعض التحسينات - يتم استدعاء viewDidAppear الخاص بوحدة التحكم في العرض قبل TabBarControllerDelegate didSelectViewController.

هل هناك آلية UITabBarController تسمح بعرض عرض العنصر النائب قبل عرض وحدة التحكم في العرض؟

أيه أفكار؟

شكرا لك يا مات

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

المحلول

التقنية المستخدمة هنا هي:

  1. ضع "عرض تحميل" في وحدة التحكم الخاصة بك viewWillAppear: أوviewDidLoad: طريقة
  2. بعد ذلك ، تفرخ مؤشر ترابط جديد للقيام بالتحميل الفعلي (أو أي عملية تستغرق وقتًا طويلاً)
  3. عند الانتهاء ، أرسل رسالة إلى وحدة التحكم (باستخدام نمط المندوب ، على سبيل المثال) الذي يتم "التحميل"
  4. أخيرًا ، قم بإزالة عرض التحميل واترك المستخدم متابعة

يؤدي القيام بذلك بهذه الطريقة إلى إبقاء واجهة التطبيق الخاصة بك قابلة للاستخدام، على الرغم من أن وحدة التحكم في العرض المعينة مشغولة.

لا توجد طرق مدمجة للقيام بذلك، سيتعين عليك ترميز كل شيء بنفسك.

نصائح أخرى

ويمكن أن أكون مخطئا، ولكن ربما مشكلتك هي أنه من خلال القيام بالعمل تستغرق وقتا طويلا في viewDidAppear، كنت عرقلة موضوع الحدث الرئيسي بحيث لا يتم تحديث العرض حتى اكتمال العمل. بمعنى آخر. قمت بإعداد "تحميل الآن" في viewWillAppear، ولكن هل ترى ذلك أبدا منذ ذلك الحين، في الوقت الذي يكمل viewDidAppear، انها فعلت مع الأعمال الشاقة.

وNSObject في performSelector: withObject: afterDelay: طريقة يمكن أن يكون مفيدا هنا. عرض بك "الرجاء الانتظار" التنبيه أو الرأي، أو أيا كان، ثم استخدام performSelector: withObject: afterDelay: لبدء العمل الفعلي. سوف يتم تأجيلها تحميل الخاص بك حتى بعد إعدام القادم من الحلقة الحدث، وهو الوقت الذي سيكون قد تم إعادة رسم واجهة المستخدم.

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