2012-02-10 11 views
-1

私はピッカーで読んでいて、簡単なものを試してみたいと思っていましたが、自分のコードで何が間違っているのか分かりません。ピッカーを正しく動作させるにはどうすればよいですか?

私は自分のストーリーボードのピッカーを正しいコントローラに割り当てました。私は私のヘッダーに次のものを追加しました。

@interface CustomerView : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate> 
{ 
    IBOutlet UIPickerView * CompanyPicker; 
IBOutlet UIPickerView * ClientPicker; 
    NSMutableArray *arrayCompanies; 
NSMutableArray *arrayClients; 
} 

私はその後、私はdidloadの下で私の見出しに作成された配列にいくつかの情報を追加しました:その後

arrayCompanies = [[NSMutableArray alloc] init]; 
    [arrayCompanies addObject:@"Test Company 01"]; 
    [arrayCompanies addObject:@"Test Company 02"]; 
    [arrayCompanies addObject:@"Test Company 03"]; 
    [arrayCompanies addObject:@"Test Company 04"]; 
    [arrayCompanies addObject:@"Test Company 05"]; 
    [arrayCompanies addObject:@"Test Company 06"]; 
    [arrayCompanies addObject:@"Test Company 07"]; 

    arrayClients = [[NSMutableArray alloc] init]; 
    [arrayClients addObject:@"Test Client 01"]; 
    [arrayClients addObject:@"Test Client 01"]; 
    [arrayClients addObject:@"Test Client 01"]; 
    [arrayClients addObject:@"Test Client 01"]; 
    [arrayClients addObject:@"Test Client 01"]; 
    [arrayClients addObject:@"Test Client 01"]; 
    [arrayClients addObject:@"Test Client 01"]; 

を私は実装で、以下を追加しましたが、情報が私の中にロードするように見せかけていませんアレイ。私はここで何か間違っていますか?

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView { 

    return 2; 
} 

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component { 

return [arrayCompanies count]; 
    return [arrayClients count]; 
} 

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 

return [arrayCompanies objectAtIndex:row]; 
    return [arrayClients objectAtIndex:row]; 
} 

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

NSLog(@"Selected Company: %@. Index of selected company: %i", [arrayCompanies objectAtIndex:row], row); 
    NSLog(@"Selected Client: %@. Index of selected client: %i", [arrayClients objectAtIndex:row], row); 
} 

答えて

2

使用このテクニック:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView { 

    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component { 
if ([thePickerView isEqual: CompanyPicker]) { 
return [arrayCompanies count]; 
} else if ([thePickerView isEqual: ClientPicker]) { 
    return [arrayClients count]; 
} 
return 0; 

} 
+0

も リターン[arrayCompaniesカウント]。 戻り値[arrayClients count]; //この行は決して実行されない – NeverBe

+0

私はそれを試しましたが、アプリケーションにエラーは見られませんが、ピッカーがそこにいるかどうかを確認するために実行すると、爆発します。 'NSInvalidArgumentException'、理由: ' - [UIView numberOfComponentsInPickerView:]:インスタンスに送信された認識できないセレクタ0x6a773b0' – JESlabbert

+0

これは、UIPickerViewが実際にUIViewとして初期化され、nibファイルのUIPickerViewではないことを示します。 StoryBoardでUIViewをUIPickerViewに設定していることを確認してください。 –

関連する問題