首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIActionSheet再次出现在iPad上后崩溃

UIActionSheet再次出现在iPad上后崩溃
EN

Stack Overflow用户
提问于 2011-07-03 00:47:28
回答 2查看 446关注 0票数 0

UIActionSheet在第二次出现后崩溃。

.H文件

代码语言:javascript
复制
..UIActionSheetDelegate>{

 UIActionSheet *popupQuery;
}
@property (nonatomic, retain) UIActionSheet *popupQuery;

.M文件

代码语言:javascript
复制
-(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];
}
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-03 01:06:51

在从actionButton显示popupQuery后释放它时,将放弃对该对象的所有权。如果对象被释放,那么popupQuery将指向一个被释放的对象,当你这样做的时候,popupQuery.visible可能会给你一个崩溃。既然你拥有它作为财产,你可以这样做-

代码语言:javascript
复制
self.popupQuery = [[[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Readibility" otherButtonTitles:@"Email URL", @"Print", nil] autorelease];

删除末尾的release语句。现在,当您使用popupQuery.visibleself.poupQuery.visible时,对象将是有效的。在这种情况下,您将拥有所有权,并且可以安全地访问对象。

票数 2
EN

Stack Overflow用户

发布于 2011-07-03 01:04:30

UIActionSheetdocumentation

代码语言:javascript
复制
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

参数

buttonIndex

单击的按钮的索引。按钮索引从0开始。

因此,问题可能出在您的-1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6558313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档