2011-03-30 51 views
0

这似乎是一个有点愚蠢的问题要问,但自升级到Xcode 4,我使用的技术往往不起作用。我大约需要1的.xibiPhone Xcode 4 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错误b在应用程序加载之前...

任何人都可以向我解释这一点吗?我不明白作为我以前在Xcode 3中使用此方法编译并在Xcode 4中正常运行的项目,但是我尝试使用的任何新项目都不起作用?

非常感谢

山姆

回答

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]; 
} 

它现在!