سؤال

آمل أن يتمكن شخص ما من توجيهي في الاتجاه الصحيح.

لدي وحدتي تحكم، MasterViewController (الذي يعرض الكثير من البيانات) وLoginViewController (يسجل دخول المستخدمين ويحصل على تلك البيانات).

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

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSDictionary *session = [Global getSession];
    if(!session){

        // Not logged in.
        LoginViewController *loginViewController = [LoginViewController alloc];
        [self.navigationController presentViewController:loginViewController animated:YES completion:nil];

    }else{
        [self loadView];
    }
}

بمجرد تسجيل الدخول لدي هذا الرمز الذي يعيدهم إلى MasterViewController بهذا الرمز:

[self dismissViewControllerAnimated:NO completion:nil];

المشكلة هي عدم تحميل MasterViewController على الإطلاق.كيف يمكنني إعادة عرض هذا العرض بالكامل قبل إعادة المستخدم إلى العرض؟

شكرا بيتر

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

المحلول

هناك طرق مختلفة.

  1. استخدم المفوض، وأعلن عن طريقة لإعادة التحميل في وحدة تحكم العرض الرئيسية، مثل "reloadData".قبل تقديم وحدة التحكم في عرض تسجيل الدخول، قم بتعيين وحدة التحكم في العرض الرئيسي كمفوض لـloginSuccessEvent.بمجرد نجاح تسجيل الدخول قبل رفضه، قم باستدعاء طريقة المفوض.

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

للقيام بالخيار 1:

تحديد بروتوكول للتفاعل

@protocol LoginDelegate

   -(void) loginSuccessPostProcess;

@end

في وحدة التحكم في عرض تسجيل الدخول.

ملف .h --> الإعلان عن خاصية

@property (weak) id< LoginDelegate> loginDelegate;

.m --> بعد نجاح تسجيل الدخول قبل الرفض، اتصل بالطريقة المفوضة

//Login Success
[self. loginDelegate loginSuccessPostProcess];
[self dismissViewControllerAnimated:YES completion:nil];

وحدة التحكم في العرض الرئيسي -> تنفيذ الطريقة.

.h --> اعتماد البروتوكول

  @interface mainViewCOntroller < LoginDelegate>

م

  1. قم بتعيين وحدة تحكم العرض الرئيسية كمفوض لخاصية المفوض في Login View Contoller بعد إنشاء مثيل لها وقبل تقديمها

    تسجيل الدخولViewController *login = [[LoginViewController alloc] init];// قم بتعيين مندوبك بعد إنشاء مثيل وقبل تقديم login.logindelegate = self ؛[الحضور الذاتيViewController:تسجيل الدخول]؛

تنفيذ طريقة إعادة التحميل

 -(void) loginSuccessPostProcess
 {
        //Your Method.
  }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top