سؤال

في تطبيق MainViewController الخاص بي ، أحتاج إلى الوصول إلى المتغيرات من فئتين مختلفتين. واحدة من الفئات هي AppDelegate والآخر هو FlipsideViewController. كانت الطريقة التي وصلت بها إلى هذه الرمز:

-(void)someMethod
{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = (FlipsideViewController *)[[UIApplication sharedApplication] delegate];

ثم لدي صفيف أقوم بالوصول من مندوب التطبيق الخاص بي ، وبعض متغيرات المثيل التي تُرجع القيم من مثيل UISwitch من FlipsideViewController:

NSMutableArray* array = [[NSMutableArray alloc] initWithArray:(NSMutableArray *)appdelegate.originalArray];
for (id element in array)
{
    if ([[element attribute] isEqualToString:@"someAttribute"] && [viewController.switch1 isOn] == YES)
    {
    //preform function
    }
}

أستمر في الحصول على رسالة الخطأ "-[myapplicationAppDlegate Switch1]: تم إرسال محدد غير معترف به إلى مثيل. إنهاء التطبيق بسبب استثناء غير معروف"

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

المحلول

[uiapplication sharedapplication] مندوب] ؛ ستعيد دائمًا مثيل (المفرد) MyApplicationAppDelegate الفصل ولا يمكنك ببساطة إلقاءه على FlipsideViewController*. للوصول إلى قيمة FlipsIdeController (على افتراض أنه تم تخزينه في AppDelegate الخاص بك) يمكنك تحديد خاصية والاتصال بها:

-(void)somemethod{
     MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
     FlipsideViewController *viewController = appDelegate.flipsideController;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top