有没有办法为选择器设置默认值?我保存了所有选择器中最后选择的行,我希望能够让选择器在启动时加载那些保存的行。到目前为止,我已经找到了这段代码:
[settingsPagePicker selectRow:3 inComponent:0 animated:YES];
它有效,但仅当用户点击选择器时。我需要它在应用程序首次加载时工作。如果我将此代码放在 viewDidLoad 应用程序将崩溃。任何人都知道将它放在我的代码中以使其工作的正确位置吗?
感谢您的时间!
有没有办法为选择器设置默认值?我保存了所有选择器中最后选择的行,我希望能够让选择器在启动时加载那些保存的行。到目前为止,我已经找到了这段代码:
[settingsPagePicker selectRow:3 inComponent:0 animated:YES];
它有效,但仅当用户点击选择器时。我需要它在应用程序首次加载时工作。如果我将此代码放在 viewDidLoad 应用程序将崩溃。任何人都知道将它放在我的代码中以使其工作的正确位置吗?
感谢您的时间!
在调用 -selectRow:inComponent:animated 以确保该索引处有可用数据(示例代码中的 3)之前,您是否检查了 settingsPagePicker 的数据源?
您如何为数据源加载数据?您可以先在 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;
}
这是我班上的一些方法。
- (void)viewDidLoad { [super viewDidLoad]; currentNumbersOfComponents = 1; //[picker selectRow:2 inComponent:0 animated:NO]; }
- (void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[picker selectRow:2 inComponent:0 animated:YES];
}
#pragma mark picker view data source methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return currentNumbersOfComponents;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return 5;
}
picker.dataSource 是 self