2013-05-29 55 views
0

我创建按钮内部的下方显示循环的代码为按钮iOS应用崩溃单击

for(int i=1;i<[_imageDetailsEntities count];i++) 
{ 
    UIButton *bttn=[UIButton buttonWithType:UIButtonTypeCustom]; 
    bttn.frame=CGRectMake(x,y,75,75); 
    [_scrollView addSubview:bttn]; 
    ImageDetails *imageDetails=[_imageDetailsEntities objectAtIndex:i]; 
    UIImage *image= [self imageFromPath:imageDetails.imagePath]; 
    [bttn setImage:image forState:UIControlStateNormal]; 
    bttn.tag=i-1; 
    [bttn addTarget:self action:@selector(imageTapped:) forControlEvents:UIControlEventTouchUpInside]; 
    x=bttn.frame.origin.x+bttn.frame.size.width+distanceBetweenButtons; 
    if(i%3==0) 
    { 
     x=29; 
     y=y+bttn.frame.size.height+20; 
    } 

} 
[_scrollView setContentSize:CGSizeMake(320,y+95)]; 


-(void)imageTapped:(id)sender 
{ 
    UIButton *bttn=(UIButton*)sender; 
    [_delegate didFinishChoosingImageAtIndex:bttn.tag]; 

} 

应用与EXC_Bad接入消息崩溃时,我一个轻按button.I正在使用ARC。我不知道,我在这里失踪。请帮助我

+1

你有没有检查_delegate。是零吗? –

+0

@ bit-whacker,这不是问题。如果他以编程方式添加事件,他可以使用void。 –

+0

@Nishnat Tyagi我甚至通过评论该行代码进行了检查。但仍然崩溃 – Karthick

回答

0

尝试打开NSZombie,看看是否有太多东西被释放.EXC_BAD_ACCESS表示当您发送消息时已经释放某些东西。

-1

你应该在你的控制器中维护一个按钮阵列,所以ARC不会释放它们。

在你的界面:

@property (nonatomic, strong) NSMutableArray *buttons; 

您的代码:

NSMutableArray *buttons = [NSMutableArray array]; 

for(int i=1;i<[_imageDetailsEntities count];i++) 
{ 
    ...your code 
    [buttons addObject:bttn]; 
} 

self.buttons = buttons; 

你可以再次使用该阵列可从视图中删除按钮如果需要的话。

+3

如果将它们添加到视图中,它们不会被释放,因为将它们分配给视图会增加retaincount。 – peko

+0

是的,你说得对,在这里回答太快 – Marcel

1

尝试imageTapped下替换以下行:

[_delegate didFinishChoosingImageAtIndex:bttn.tag]; 

if([_delegate respondsToSelector:@selector(didFinishChoosingImageAtIndex:)]){ 
    [_delegate didFinishChoosingImageAtIndex:bttn.tag]; 
} 
0

不知道你的代码做究竟是什么,但它看起来像你的for循环有一个一次性的错误。 要么使用

for(int i=0;i<[_imageDetailsEntities count];i++) 

for(int i=1;i<=[_imageDetailsEntities count];i++) 
如果要遍历所有一样的东西