سؤال

لديّ وحدة تحكم عرض يتم تقديمها على الضغط على إحدى علامات التبويب في TabbarController. في وحدة التحكم هذه ، أقوم بتهيئة uiimagePickerController في طريقة ViewDidload:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Set imagePicker
    //-------------------------//
    _imagePicker = [[UIImagePickerController alloc] init];
    _imagePicker.delegate = self;
    _imagePicker.videoMaximumDuration = 10.0f;
}

القصد من ذلك هو عرض uiimagePickerController في وقت لاحق عند الضغط على زر. لسبب ما على الرغم من الضغط على أيقونة علامة التبويب لوحدة التحكم في العرض ، هناك تعليق 3-4 ثانية أثناء تشغيل طريقة ViewDidload هذه. عندما أتعلق بالخط _imagePicker = [[uiimagePickerController inist] init] لا يوجد وقت تعليق ويتم تحميل وحدة تحكم العرض على الفور - كما ينبغي.

هل يعرف أي شخص لماذا تخصيص وتهيئة uiimagePickerController يستغرق وقتًا طويلاً؟ إذا كان الأمر كذلك ، هل هناك طريقة لتسريعها بخلاف تشغيلها كعملية خلفية؟ يبدو أن هذا ليس سلوكًا طبيعيًا.

أنا أستخدم iOS7 ، وأنا لا أدعو ViewWillAppear أو ViewDidAppear.

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

المحلول

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

نصائح أخرى

جرب هذا iOS 12

//show a HUD or activityIndicator
dispatch_async(dispatch_queue_create("openPhotosCamera", NULL), ^{
   
    UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    
    dispatch_async(dispatch_get_main_queue(), ^{
        //hide HUD or activityIndicator
        [presenter presentViewController:mediaUI animated:YES completion:nil];
    });
});

** مقدم العرض هو yourviewController / Self

جرب هذا.

    - (void)viewDidLoad{

    //Set imagePicker
    //-------------------------//
    _imagePicker = [[UIImagePickerController alloc] init];
    _imagePicker.delegate = self;
    _imagePicker.videoMaximumDuration = 10.0f;

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