2011-12-26 9 views
0

ピッカービューの行コンポーネントが選択されているときにビューにナビゲートし、ボタンchangeGroup.Onをクリックしてピッカービューを表示する必要があります。しかし、それは起こっていない!これは、ピッカービューのボタンのアクションが表示されているボタン操作のピッカービューがクラッシュする

- (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ののalloc] initWithObjectsを: @ "ファミリー"、@ "フレンズ"、@ "オフィス"、@ "知人"、nil] autorelease];

です。self.groupArr = ....;表示および問題を修正するに貢献した人のためにすべての人のための

感謝:)

+0

ここにもクラッシュログを置くことができますか? – rishi

+0

@rishi yeah Mr.Rishi、私は明確な理解のためにスナップショットを配置しました。編集済みの回答をご覧ください。ありがとうございます。 –

+0

スクリーンショットによると、未割り当てのオブジェクトへの参照、メモリの問題のようです。コンソールログにも何かがありますか? – rishi

答えて

1

あなたのgroupArr配列は、自動解放のためにcontantを取り去っています。したがって、これを変更する

groupArr = [[NSMutableArray alloc] initWithObjects:@ "ファミリー"、@ "Friends"、@ "Office"、@ "Acquaintances"、nil];

[groupArr retain];

+0

答えをありがとう、しかし私はとにかくそれを使用して固定しました 自己.groupArr = [[NSMutableArray alloc] initWithObjects:@ "ファミリー"、@ "Friends"、@ "Office"、@ "Acquaintances"、nil]; –

+0

リロードピッカービュー。このコードを使用する[agrpPicker reloadAllComponents];ボタンを押したとき – kulss

+0

ああ、確かに懸念と答えに感謝します。 –

0

は.hファイルにUIPickerViewDelegateを追加します。

.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

編集した質問(投稿)を参照してください、解決策をとにかく答えてください:) –

関連する問題