سؤال

أقوم بتحميل مجموعة من الملفات من iPhone إلى خدمة ويب.أرغب في الحصول على UIAlertView على الشاشة مع وجود UIActivityIndicatorView بالداخل.حصلت على ذلك للعمل بشكل جيد.ومع ذلك، أريد تحديث عنوان UIAlertView عند تحميل كل ملف.("جاري تحميل الملف 1..."، "جاري تحميل الملف 2..."، إلخ.)

أعلم أنه لا يمكنك فقط تعيين العنوان في حلقة باستخدام طلبات الويب المتزامنة حيث لن يتم استدعاء حلقة تشغيل واجهة المستخدم أبدًا.لقد حاولت استخدام NSTimer لإيقاف طلبات الويب، ولكن بما أن مدة كل طلب لا يمكن التنبؤ بها، فإن هذا لا ينجح.(يمكن تحديث الرسالة قبل انتهاء الطلب فعليًا.)

أريد حقًا تحميل كل ملف بشكل متزامن، واحدًا تلو الآخر، نظرًا لأن النطاق الترددي لجهاز iPhone محدود جدًا.لا يمكنني اكتشاف آلية لأقول "بمجرد انتهاء هذه العملية المتزامنة، اسمح لواجهة المستخدم بالتحديث لعلامة، ثم قم بإجراء عملية متزامنة أخرى."

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

المحلول

حسنًا، هذا هو النهج الذي اتبعته لحل هذه المشكلة:

  1. قم بإنشاء UIAlertView
  2. ابدأ طلب ويب غير متزامن لنشر العنصر، واضبط المفوض على نفسه
  3. في اتصالDidFinishLoading:الطريقة، تحقق لمعرفة ما إذا كان هناك المزيد من العناصر للنشر.إذا كان هناك، قم بتحديث العنوان وابدأ طلب مزامنة آخر.إذا لم يكن الأمر كذلك، تجاهل التنبيه.

هذا يعني أنه يتعين عليك الاحتفاظ ببعض متغيرات الفئة لتتبع الطلب الذي يتم تحميله ولكنه يعمل بشكل مثالي ولا يتضمن أي سلاسل معقدة أو أي شيء آخر.

نصائح أخرى

هل جربت هذا؟

alertView.title = @"new title";
[alertView setNeedsDisplay];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top