2012-05-09 28 views
0

我有一个崩溃当我点击“OK”UIButton的点击崩溃的应用程序

- (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的。

此警报显示正常。但是,当点击“确定”按钮时,应用程序崩溃,它永远不会到达 - (void)dismissError:(id)sender;

我在错误的地方添加按钮? (它给出通用int retVal = ...... EXC_BAD_ACCESS)

+1

你尝试打开NSZombies检查一下释放实例收到消息? –

+0

是的。这解决了这个问题。点击之前,autorelease打勾。 – Edison

回答

3

除非您在外部显示器上显示某些内容,否则不应创建新的UIWindow。

在iOS中,Windows没有标题栏,关闭框或任何其他视觉装饰。一个窗口始终只是一个或多个视图的空白容器。此外,应用程序不会通过显示新窗口来更改其内容。如果要更改显示的内容,请改为改变窗口的最前面的视图。

看看View Programming Guide for iOS

相关问题