كيف يمكن للمرء الوصول إلى وحدة التحكم في العرض الفائق؟

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

سؤال

عندي مشكلة وسأحاول توضيح المشكلة:

  1. لدي واحد رئيسي UIViewController (الشاشة بأكملها)
  2. عندي واحد ثانوي UIViewController (حدود)
  3. أضفت وجهة نظري الثانوية إلى وجهة نظري mainView باستخدام هذا:

    [mainController.view addSubview:secondaryController.view];   
    
  4. لقد قمت بإنشاء وحدة تحكم ثالثة: modalController, لقد أضفته إلى وحدة التحكم الثانوية الخاصة بي مثل هذا:

    [secondaryController presentModalViewController:modalController animated:YES];
    
  5. أقوم بإجراء حساب التفاضل والتكامل بناءً على بعض الأحداث بداخلي modelController.

  6. أنا قادر على إرسال رسائل من بلدي modalController لي secondaryController استخدام:

    [[self parentViewController]  performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
    

    ملحوظة: "الذات" يتوافق مع modalController

  7. أحتاج إلى تمرير "myObject" إلى ملفي mainController, ، ولكن لا أستطيع الإشارة إلى بلدي mainController من secondaryController.حاولت هذا:

    [[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5];
    

    ملحوظة: "الذات" يتوافق مع secondaryController

    لكنه لا يعمل، لدي إمكانية الوصول إلى عرض mainController الخاص بي باستخدام: self.view.superview

    ملحوظة: "الذات" هي بلدي secondaryController

ولكن لا لوحدة التحكم الخاصة به.

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

المحلول

في وحدة التحكم الثانوية الخاصة بك، حاول

id mainViewController = [self.view.superview nextResponder];

وتحقق مما إذا كانت هذه هي وحدة التحكم في العرض التي تبحث عنها.

وثائق أبل -[UIResponder nextResponder]:

يطبق UIView هذه الطريقة عن طريق إرجاع كائن UIViewController الذي يديره (إذا كان لديه واحد) أو طريقة العرض الخاصة به (إذا لم يكن كذلك)

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