سؤال

أحاول تغيير لون الخلفية من UiWindow عند إرسال إجراء إلى الفئة MyController. ومع ذلك، فإن UiWindow موجودة في فئة AppDelegate، لذلك لا يمكنني الوصول إلى المتغير لتعديله باستخدام

window.backgroundColor = [UIColor theColor];

في myController. هنا هو رمز MyController.M:

implementation MyController - (Ibaction) SliderChanged: (ID) المرسل {// تريد استدعاء بعض الأسلوب لتغيير لون الخلفية uiwindow}

وهنا هو رمز AppDelegate.h:

تضمين التغريدة } - (فراغ) Changecolortored: (int) R Green: (int) G Blue: (int) B؛ property (غير مراقب، الاحتفاظ) iboutlet uiwindow * نافذة؛ @نهاية

حاولت تنفيذ طريقة changecolortored ... في فئة AppDelegate لأن هذه الطريقة لديها إمكانية الوصول إلى المتغير window, ، لكنني لم يكن لدي أي طريقة للاتصال بذلك من sliderChanged طريقة في myController.

كيف يمكنني تعديل نافذة UiWindow * من فئة أخرى؟

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

المحلول

[UIApplication sharedApplication].delegate.window.backgroundColor = [UIColor myColor];

إذا كان هناك نافذة واحدة فقط،

[UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor myColor];

نصائح أخرى

أعتقد أنك تستطيع إما:

قم بإجراء بعض الأسلوب الثابت في الفصل الذي يحتوي على متغير النافذة

أو

تمرير متغير النافذة إلى الفئة الجديدة.

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