我正在尝试按字母顺序对字符串的 NSMutableArray 进行排序,并在 UIPickerView 中显示排序列表。我正在使用另一个 NSArray 来创建排序列表。
我使用 PickerView 委托方法并将它们包含在我的 .h 设置中:并将数据源和委托出口连接到 filesOwner。在我的 .h 文件中,我还创建了一个 IBOutlet UIPickerView *pickerView; 并为它创建了一个合成属性,如下所示:
@property (nonatomic, retain) IBOutlet UIPickerView *pickerView;
为了解决问题,我首先通过执行以下操作将未排序的 NSMutableArray 设为源:
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [pickerArray objectAtIndex:row];
}
我未排序的 MutableArray 没有问题,并且在 PickerView 中显示数据(未排序)没有问题,但是当我将数组更改为排序的 NSArray 时,我在尝试移动 PickerView 后崩溃了!?两个数组中项目的 NSLog 显示相同数量的项目,相同的数据(明显不同的显示)但是 Xcode 报告 EXC_BAD_ACCESS?? 这个分不清??
这是我的代码:(注意:sortedPickerArray 是一个 NSArray,pickerArray 是一个在我的 .h 文件中声明的 NSMutableArray)
- (void)viewDidLoad{
[super viewDidLoad];
sortedPickerArray = [[NSArray alloc] init];
pickerArray = [[NSMutableArray alloc] initWithObjects:
@"ObjectA",
@"ObjectB",
@"ObjectC",
@"ObjectD",
nil];
sortedPickerArray = [pickerArray sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)];
[pickerView selectRow:0 inComponent:0 animated:NO];
pickerView.showsSelectionIndicator = YES;}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component{
return [sortedPickerArray count];
}
-(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [sortedPickerArray objectAtIndex:row];
}
-(void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSLog(@"Row %d was selected", row);
}
对此的任何帮助将不胜感激。