2011-12-26 95 views
0

我有一個選擇器視圖,當選擇器視圖的行組件被選中時,它導航到一個視圖,在那裏我有一個按鈕changeGroup.On點擊按鈕,必須出現選擇器視圖,但它沒有發生!它的轟然Picker View按鈕動作崩潰

這裏是我的代碼:

- (void)viewDidLoad 
{ 
groupArr = [[[NSMutableArray alloc]initWithObjects:@"Family",@"Friends",@"Office",@"Acquaintances", nil]autorelease]; 
    agrpPicker.hidden = YES; 
} 

#pragma mark- 
#pragma mark PickerView Datasource 

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    int number = 0; 

    if (agrpPicker.hidden == NO) 
    { 
     number = 1; 
    } 

    return number; 
} 
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    int count = 0; 
    if (agrpPicker.hidden == NO) 
    { 
     count = [self.groupArr count]; 
    } 
    return count; 
} 

#pragma mark- 
#pragma mark PickerView Delegate 

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    NSString *str = [[[NSString alloc]init]autorelease]; 

    if (agrpPicker.hidden == NO) 
    { 
     str = [self.groupArr objectAtIndex:row]; 
    } 

    return str; 
} 

這是爲選擇器視圖的按鈕的動作出現:

-(IBAction)groupButtonSelceted:(id)sender 
{ 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.6]; 
    CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, 200); 
    agrpPicker.transform = transfrom; 
    [UIView commitAnimations]; 
    agrpPicker.hidden = [agrpPicker isHidden] ? NO : YES; 
    [self.view addSubview:agrpPicker]; 
} 

連接,使得選擇器視圖存在於IB選擇器視圖。

這裏是它得到了墜毀

enter image description here

,並在控制檯的屏幕截圖,顯示如下快照消息:

enter image description here

可以在任何專家得分我出去在哪裏我出錯了......

請幫助我與您寶貴的建議,在此先感謝:)

對不起球員,我發現了什麼是錯誤的,我沒有保留陣列一旦它被自動釋放,而不是:

groupArr = [[[NSMutableArray的頁頭] initWithObjects: @「家庭」,@「朋友」,@「辦公室」,@「熟人」,無] autorelease];

它是self.groupArr = ....;

感謝所有誰觀看,併爲那些誰在固定的問題:)

+0

你也可以把崩潰日誌嗎? – rishi 2011-12-26 14:47:30

+0

@rishi是Mr.Rishi,我已經放置了一個清晰的理解快照,請參閱編輯的答案,在此先感謝:) – 2011-12-26 15:05:22

+0

根據屏幕截圖,它似乎是內存問題,引用未分配的對象。控制檯日誌中是否還有任何內容? – rishi 2011-12-26 15:11:16

回答

1

由於autorelease,您的groupArr數組正在失去它的內容。所以改變這個

groupArr = [[NSMutableArray alloc] initWithObjects:@「Family」,@「Friends」,@「Office」,@「熟人」,無];

[groupArr retain];

+0

感謝您的答案,但我已經修復它使用 自我.groupArr = [[NSMutableArray alloc] initWithObjects:@「Family」,@「Friends」,@「Office」,@「熟人」,無]; – 2011-12-27 07:00:24

+0

重新加載選取器視圖。使用此代碼[agrpPicker reloadAllComponents];按下按鈕 – kulss 2011-12-27 07:37:05

+0

哦,非常感謝您的關注和答覆,TC :) – 2011-12-27 07:57:41

0

添加UIPickerViewDelegate在.h文件中作出了貢獻。

在.m文件中,添加PickerView委託和數據源方法。 數據源:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; 

代表:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component; 

有關詳細信息,從蘋果指UIPickerView class

+0

請參閱編輯的問題(後),請給我一個解決方案,謝謝你的答案無論如何:) – 2011-12-27 06:25:50