سؤال

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

ومع ذلك، فإن عرض التفاصيل يسحب البيانات من البيانات الأساسية. أنا أسحب كمية كبيرة نسبيا من البيانات التي تستغرق حوالي ثلاث ثوان للتحميل.

أردت أن أضيف أن uiactivityindicatorView لإظهار التقدم.

حاولت أن أبدأ الرسوم المتحركة بمجرد النقر فوق المستخدم، لذلك قمت بتعيينه على التحريك في DidselectrowatindExPath

لسبب ما، لا يبدأ مؤشر النشاط قبل دفع عرض التفاصيل.

أي فكرة لماذا؟ أو أفضل طريقة لتنفيذ هذه الفكرة؟

~ adham.

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

المحلول

لأنك تبدأ الرسوم المتحركة ثم بدء تشغيل عملية كبيرة في نفس الخيط. النظر في تشغيل 3 التشغيل الثاني في مؤشر ترابط جديد. ينظر الى NSOperationQueue ثم إنشاء NSOperation لتشغيل هذا الإجراء. سوف تعمل بهذه الطريقة.

نصائح أخرى

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

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

طريقة الاتصال في الخيط:

[NSThread detachNewThreadSelector: @selector(loadMethod) toTarget:self withObject:nil];

انظر التالية لمزيد من التفاصيل:
http://iphone.zcentric.com/؟s=uiactivityindicatorView.

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