0

在我的 MainViewController 实现中,我需要访问来自两个不同类的变量。其中一个类是 AppDelegate,另一个是 FlipsideViewController。我访问这些的方式是通过以下代码:

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

然后我有一个从我的应用程序委托访问的数组,以及一些从flipsideViewController的UISwitch实例返回值的实例变量:

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

我不断收到错误消息“-[MyApplicationAppDelegate switch1]:无法识别的选择器已发送到实例。由于未捕获的异常而终止应用程序”

4

1 回答 1

2

[[UIApplication sharedApplication] 委托]; 将始终返回类的(单例)实例,MyApplicationAppDelegate您不能简单地将其转换为FlipsideViewController*. 要访问 Flipsidecontroller 值(假设它存储在您的 appdelegate 中),您可以定义一个属性并调用它:

-(void)somemethod{
     MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
     FlipsideViewController *viewController = appDelegate.flipsideController;
}
于 2010-01-15T23:24:24.387 回答