0

[OK] をクリックするとクラッシュするエラー アラート ビューがあります。

- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setTitle:@"OK" forState:UIControlStateNormal];
    [button setFrame:CGRectMake(10, 80, 266, 43)];  
    [button addTarget:self action:@selector(dismissError:) forControlEvents:UIControlEventTouchUpInside];
    [alertView addSubview:button]; //This is a subview of 
    //...other stylings for the custom error alert view

    errorWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    errorWindow.windowLevel = UIWindowLevelStatusBar;
    errorWindow.hidden = NO;        
    [errorWindow addSubview:alertView];
    [errorWindow makeKeyAndVisible];

}

この alertView は、カスタム ErrorAlert:UIView 内にあります。

このアラートは正常に表示されます。

ただし、「OK」ボタンをクリックすると、アプリがクラッシュし、到達しませんでした - (void)dismissError:(id)sender;

間違った場所にボタンを追加していますか? (一般的な int retVal=......EXC_BAD_ACCESS が返されます)

4

1 に答える 1

4

外部ディスプレイに何かを表示していない限り、新しい UIWindow を作成しないでください。

iOS では、ウィンドウにタイトル バー、クローズ ボックス、その他の視覚的な装飾はありません。ウィンドウは常に、1 つまたは複数のビューの単なる空のコンテナーです。また、アプリケーションは、新しいウィンドウを表示することによってコンテンツを変更しません。表示されるコンテンツを変更したい場合は、代わりにウィンドウの最前面ビューを変更します。

iOS 向け View プログラミング ガイドをご覧ください

于 2012-05-09T20:08:04.940 に答える