0

これはややばかげた質問のように思えますが、Xcode 4 にアップグレードして以来、私がよく使用する手法が機能しません。.xib 内のピッカーのデータ ソースの設定を行っています。

以前はヘッダーファイルで以下を宣言するケースでした...

 @interface testViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {

    UIPickerView *singlePicker;
    NSArray *pickerData;

}

@property (nonatomic,retain) IBOutlet UIPickerView *singlePicker;
@property (nonatomic,retain) NSArray *pickerData;

次に、メインの「viewDidLoad」内にデータソースを設定します...

- (void)viewDidLoad
{
    NSArray *array = [[NSArray alloc] initWithObjects:@"Small", @"Medium", @"Long", nil];
    self.pickerData = array;
    [array release];

    [super viewDidLoad];
}

次に、ファイルの所有者をピッカーとピッカーのデータソースに接続し、アウトレットをファイルの所有者に委任しますが、ピッカーのデータソース アウトレットをファイルの所有者に接続すると、アプリが読み込まれる前に SIGABRT エラーが発生します...

誰かが私にこれを説明できますか? このメソッドを使用して Xcode 3 で以前にビルドしたプロジェクトが Xcode 4 で正常にコンパイルおよび実行されることを理解していませんが、作成しようとしている新しいプロジェクトは機能しませんか?

どうもありがとう

サム

4

1 に答える 1

1

結局のところ、実装ファイル内に次の関数を含める必要があります...

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [pickerViewArray count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [self.pickerViewArray objectAtIndex:row];
}

それは今動作します!

于 2011-03-30T19:10:31.953 に答える