سؤال

لدي زر على المنعش حاليًا إلى ViewController ، متصل بـ Ibacte.

في ibacte أقوم بإنشاء uiaCtivityIndicatorView كالمعتاد ، مع [self.view addsubview] ، ثم قم بتحميل بعض الصور.

لقد جربت setNeedsDisplay على عرض المؤشر ، وحدة التحكم في العرض ، والنافذة ، لكنها لا تزال تقوم بتحميل الصور قبل إظهار المؤشر ، وهو بالطبع عديم الفائدة بالنسبة لي.

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

توصيات؟

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

المحلول

ما أقوم به في هذه الحالة هو تولد خيط جديد ، يحرر الخيط الرئيسي للتعامل مع تفاعل واجهة المستخدم أثناء تحميل الأشياء في الخلفية.

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

هذا مثال:

//do stuff...
[activityIndicatorView startAnimating];
[NSThread detachNewThreadSelector:@selector(loadImages) toTarget:self withObject:nil];

في الخاص بك loadImages طريقة:

- (void) loadImages {
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   //load images...
   [activityIndicatorView performSelectorOnMainThread:@selector(stopAnimating)];
   [pool drain];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top