0

这似乎是一个有点愚蠢的问题,但自从升级到 Xcode 4 后,我经常使用的一种技术不起作用。我正在为 .xib 中的 Picker 设置数据源

以前是在头文件中声明以下内容的情况...

 @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 回答