كيف يمكن للمرء الوصول إلى وحدة التحكم في العرض الفائق؟
-
06-07-2019 - |
سؤال
عندي مشكلة وسأحاول توضيح المشكلة:
- لدي واحد رئيسي
UIViewController
(الشاشة بأكملها) - عندي واحد ثانوي
UIViewController
(حدود) أضفت وجهة نظري الثانوية إلى وجهة نظري
mainView
باستخدام هذا:[mainController.view addSubview:secondaryController.view];
لقد قمت بإنشاء وحدة تحكم ثالثة:
modalController
, لقد أضفته إلى وحدة التحكم الثانوية الخاصة بي مثل هذا:[secondaryController presentModalViewController:modalController animated:YES];
أقوم بإجراء حساب التفاضل والتكامل بناءً على بعض الأحداث بداخلي
modelController
.أنا قادر على إرسال رسائل من بلدي
modalController
ليsecondaryController
استخدام:[[self parentViewController] performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
ملحوظة: "الذات" يتوافق مع
modalController
أحتاج إلى تمرير "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 الذي يديره (إذا كان لديه واحد) أو طريقة العرض الخاصة به (إذا لم يكن كذلك)