2

AppDelegate クラスから someClass 内にあるメソッドを呼び出そうとしています。私は通常、インスタンスを作成し、そのインスタンスを使用してメソッドを呼び出します。そのようです:

FFAppDelegate *delegate = (FFAppDelegate *) [[UIApplication sharedApplication] delegate];
[delegate someMethod];

私はそれを ^^ 私のコードでかなり使用していますが、完全に機能します。私がやりたいことは、それを切り替えることです。AppDelegate 内でメソッドを呼び出す代わりに、AppDelegate から別のクラス内でメソッドを呼び出したいと考えています。

SomeClass *test = (SomeClass *) [[UIApplication sharedApplication] delegate];
[test someMethod];

この場合、「インスタンスに送信された認識されないセレクター」が原因で、「キャッチされていない例外 'NSInvalidArgumentException' によりアプリを終了しています」というエラーが発生し続けます。

この問題に光を当てていただければ幸いです。:)

4

3 に答える 3

1

たとえば、AlertView を 1 回だけ作成し、任意の UiViewController で使用する場合

したがって、UIAlertView のメソッドを作成し、必要なときにメソッドを呼び出すことができます

1) appDelegate.h ファイル内

@property (nonatomic, strong) UIAlertView *activeAlertView;

2) AppDelegate.m ファイル内

-(void)openAlert
{
    NSString *strMsgPurchase = @"Write your message";
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Buy" message:strMsgPurchase delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Buy",@"Restore", nil];
    [alert setTag:100];
    [alert show];
    self.activeAlertView = alert;
}

3) uiview が必要なメソッドを呼び出すには

[((AppDelegate *)[[UIApplication sharedApplication] delegate])openAlert];

注: Appdelegate.h ファイルで-(void)openAlertメソッドを定義します。

于 2014-07-19T12:24:31.973 に答える