-selectRow:inComponent:animated を呼び出す前に、settingsPagePicker のデータ ソースをチェックして、そのインデックス (サンプル コードでは 3) で利用可能なデータがあることを確認しましたか?
データソースのデータをどのようにロードしていますか? 最初に viewDidLoad でデータ ソースを初期化し、利用可能なデータがあることがわかったら selectRow を呼び出すことができます。
更新: コードは次のようになります。
- (void)viewDidLoad
{
[super viewDidLoad];
pickerDataSource = [[NSMutableArray alloc] init];
[pickerDataSource addObject:@"Item 01"];
[pickerDataSource addObject:@"Item 02"];
[pickerDataSource addObject:@"Item 03"];
[pickerDataSource addObject:@"Item 04"];
// Might want to move this to -viewWillAppear:animated
[settingsPagePicker selectRow:3 inComponent:0 animated:YES];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (pickerView == settingsPagePicker)
{
return [pickerDataSource objectAtIndex:row];
}
return @"";
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (pickerView == settingsPagePicker)
{
return [pickerDataSource count];
}
return 0;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView
{
return 1;
}