2013-07-19 144 views
2

我有一个完美的uipickerview在一个完成和取消按钮的uipopover。当用户多次打开uipickerview时,我可以保存最后选定的行并将其显示为默认行。问题是,当用户注销并登录时,我想uipickerview重新开始,即,当我打开uipickerview并单击完成按钮(不选择任何行)时,我希望它与默认行即ie。 row0,但它显示注销前最后选定的行!我该如何解决这个问题?非常感谢。有没有办法清除uipickerview选择?

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按下按钮:

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

// PICKERVIEW选择

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

你尝试在'viewDidLoad'中设置pickerview为零吗? – CaptJak

+0

谢谢@CaptJak ..你可以更具体地说明如何在代码中完成这个任务吗? – kate

+0

CaptKack说什么。释放,设置为零,然后创建一个新的选择器视图。 – rocky

回答

5

将这个上面[super viewDidLoad]

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

这应该设置你的pickerview划船有0个指数y加载视图的时间。

+0

是它的工作@ CaptJak ..谢谢你...我把它放在[超viewdidload ],它像一个魅力 – kate

相关问题