有没有办法清除uipickerview选择?

时间:2013-07-19 21:08:20

标签: ios objective-c uipickerview nsuserdefaults uipopover

我在一个带有完成和取消按钮的uipopover中有一个完美的uipickerview。当用户多次打开uipickerview时,我能够保存最后选择的行并将其显示为默认值。问题是,当用户注销并登录时,我希望uipickerview重新开始,即,当我打开uipickerview并单击完成按钮(没有选择任何行)时,我希望它使用默认行即ie。 row0但它在退出之前显示最后选择的行!!我怎么解决这个?非常感谢。

NSString *selectedType = @"ALL";
int rowselected = 0;

- (void)viewDidLoad
{
    [super viewDidLoad];
    rowselected = 0;
    _typearray = [[NSArray alloc] initWithObjects:@"ALL", @"COACH", @"GROUP", @"PRIVATE", nil];
    NSInteger lastrow =[[[NSUserDefaults standardUserDefaults] objectForKey:@"gueststyperow"] integerValue];

    if(lastrow!=0)
        [self.picktype selectRow:lastrow inComponent:0 animated:NO];
    else
        [self.picktype selectRow:0 inComponent:0 animated:NO];
}

// DONE BUTTON PRESSED:

- (IBAction)doneButtonPress:(UIBarButtonItem *)sender {
    NSLog(@"%@",_delegate);
    NSNumber *temprow = [NSNumber numberWithInt:rowselected];
    [[NSUserDefaults standardUserDefaults] setValue:temprow forKey:@"gueststyperow"];
    [_delegate sendtype:selectedType];
}

// PICKERVIEW SELECTION

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
        inComponent:(NSInteger)component{
        rowselected = row;
        selectedType = [_typearray objectAtIndex:row];
}

1 个答案:

答案 0 :(得分:5)

将其置于[super viewDidLoad]

之上
[picker reloadAllComponents];
[picker selectRow:0 inComponent:0 animated:YES];

每次加载视图时,应该将pickerview设置为对0索引进行排序。