0

私の MainViewController 実装では、2 つの異なるクラスから変数にアクセスする必要があります。クラスの 1 つは AppDelegate で、もう 1 つは 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 に答える