默认选择器值iphone

Jef*_*eff 1 iphone default picker default-value

有没有办法为选择器设置默认值?我从所有选择器中保存了最后选择的行,我希望能够在启动时让选择器加载这些保存的行.截至目前,我已经找到了这段代码:

[settingsPagePicker selectRow:3 inComponent:0 animated:YES];
Run Code Online (Sandbox Code Playgroud)

它可以工作,但只有当用户点击选择器时.首次加载应用时,我需要它才能工作.如果我将此代码放在viewDidLoad上,应用程序将崩溃.任何人都知道在我的代码中放置它的适当位置使其工作?

感谢您的时间!

Mat*_*ong 6

在调用-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;
}
Run Code Online (Sandbox Code Playgroud)