2013-05-29 138 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++) 
如果要遍歷所有一樣的東西

相關問題