كيفية استبعاد اثنين أو أكثر من dismissModalViewController?

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

  •  28-09-2019
  •  | 
  •  

سؤال

أنا بحاجة إلى إقالة اثنين مشروط عرض وحدات تحكم, أنا أعرف كيف البوب اثنين أو أكثر من وحدات التحكم الشخصي

        UINavigationController* navController = self.navigationController;
    NSArray *array=[navController viewControllers];
    UIViewController* controller = [navController.viewControllers objectAtIndex:0];
    [navController popToViiewController:controller animated:YES];

هذا هو كيف لي أن انتقل مرة أخرى إلى أول إطلالة ولكن إذا كان هناك اثنين أو أكثر من فصل مشروط عرض ثم كيف يمكنني التنقل مرة أخرى

الرجاء مساعدتي ، شكرا لك مادان موهان

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

المحلول 4

UINavigationController* navController = self.navigationController;
NSArray *viewControllers=[navController viewControllers];
UIViewController* controller = [viewControllers objectAtIndex:0];
[navController popToViewController:controller animated:YES];

إذا قمت بتعيين الكائن في الفهرس 0 في الكود أعلاه ، فسيأخذك ذلك إلى العرض الأول وهو وحدة تحكم عرض الدفع.

1) RootView ---> MoodalView1 ---> MoodalView2 ---> MoodalView3 إذا كنت تستخدم الرمز أعلاه ، فستكون في عرض الجذر.

2) RootView ---> pushview1 ----> MoodalView1 ---> MoodalView2 -----> MoodalView3. إذا كنت تستخدم الرمز أعلاه ، فستكون في PushView.

نصائح أخرى

من المستندات -[UIViewController dismissModalViewController]:

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

استخدم هذا الرمز أدناه

[[[self presentingViewController] presentingViewController]  dismissModalViewControllerAnimated:YES];

يمكنني استخدام الأداة التالية أسلوب ثابت لمحاكاة popToRootViewController على كومة من شرطية:

// Util.m
+ (void)popModalsToRootFrom:(UIViewController*)aVc {
    if(aVc.parentViewController == nil) {
        return;
    }
    else {
        [Util popModalsToRootFrom:aVc.parentViewController];  // recursive call to this method
        [aVc.parentViewController dismissModalViewControllerAnimated:NO];
    }
}

يمكنك استخدامه مثل هذا:

[Util popModalsToRootFrom:aViewController];

إذا كنت تريد شيئا أكثر تقدما ، يمكنك أن تفعل ذلك:

+ (void)popModalsFrom:(UIViewController*)aVc popCount:(int)count {
    if(aVc.parentViewController == nil || count == 0) {
        return;
    }
    else {
        [Util popModalsFrom:aVc.parentViewController popCount:count-1];  // recursive call to this method
        [aVc.parentViewController dismissModalViewControllerAnimated:NO];
    }
}

ثم تمرير عدد من شرطية إلى pop أو مجرد -1 لموسيقى البوب جميع الطريق إلى الجذر.

إلى عن على iOS 5, ، دعم من animation==YES (وجهات النظر سوف تختبئ بالتسلسل) و completion الكتلة:

+ (void)dismissAllVCsForVC:(UIViewController *)VC animated:(BOOL)animated completion:(BPSimpleBlock)completion {
    if (VC.presentedViewController == nil) {
        if (completion) {
            completion();
        }
    } else {
        [BaseViewController dismissAllVCsForVC:VC.presentedViewController
                                        animated:animated
                                      completion:
         ^{
             [VC dismissViewControllerAnimated:animated completion:completion];
         }];
     }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top