UIActionSheet在第二次出现后崩溃。
.H文件
..UIActionSheetDelegate>{
UIActionSheet *popupQuery;
}
@property (nonatomic, retain) UIActionSheet *popupQuery;.M文件
-(IBAction)showActionSheet:(id)sender {
if (popupQuery.visible) {
NSLog(@"popupQuery isVisible");
[popupQuery dismissWithClickedButtonIndex:-1 animated:YES];
return;
}else{
popupQuery = [[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Readibility" otherButtonTitles:@"Email URL", @"Print", nil];
popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
//[popupQuery showInView:self.view];
[popupQuery showFromBarButtonItem:actionButton animated:YES];
[popupQuery release];
}
}发布于 2011-07-03 01:06:51
在从actionButton显示popupQuery后释放它时,将放弃对该对象的所有权。如果对象被释放,那么popupQuery将指向一个被释放的对象,当你这样做的时候,popupQuery.visible可能会给你一个崩溃。既然你拥有它作为财产,你可以这样做-
self.popupQuery = [[[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Readibility" otherButtonTitles:@"Email URL", @"Print", nil] autorelease];删除末尾的release语句。现在,当您使用popupQuery.visible或self.poupQuery.visible时,对象将是有效的。在这种情况下,您将拥有所有权,并且可以安全地访问对象。
发布于 2011-07-03 01:04:30
从UIActionSheet的documentation
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated参数
buttonIndex
单击的按钮的索引。按钮索引从0开始。
因此,问题可能出在您的-1。
https://stackoverflow.com/questions/6558313
复制相似问题