2012-11-22 40 views
2

所以我有一个弹出式选取器而不是键盘,但是当您滚动到选取器上的不同点时,它不会更改值。我通过一个警报显示选择了哪个年龄来测试它,并且它从第一个选项开始不会改变。我认为警报已损坏,但选择器中当前选定选项的蓝色选择器轮廓也未显示出来。下面是选择器和报警两个密码:我的选择器实际上并没有选择值?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    NSArray *array = [[NSArray alloc]  initWithObjects:@"18-29",@"30-39",@"40-49",@"50-59",@"60+",nil]; 
    self.pickerData = array; 
} 

-(IBAction)UITextFieldEditingDidBegin 
{ 

    UIPickerView *picker = [[UIPickerView alloc] 
          initWithFrame:CGRectMake(0, 244, 320, 270)]; 
    picker.delegate = self; 
    picker.dataSource = self; 
    [self.view addSubview:picker]; 
    [picker release]; 

} 

-(IBAction)donePressed 
{ 

NSInteger row = [agePicker selectedRowInComponent:0]; 
NSString *selected = [pickerData objectAtIndex:row]; 
NSString *title = [[NSString alloc] initWithFormat: 
        @"You selected %@!", selected]; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title 
               message : @"Thank you for choosing." 
               delegate:nil 
            cancelButtonTitle :@"Okay!"    
            otherButtonTitles :nil]; 
[alert show]; 
[agePicker resignFirstResponder]; 
} 

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

-(NSInteger)pickerView:(UIPickerView *)pickerView 
numberOfRowsInComponent:(NSInteger)component 
{ 
    return [pickerData count]; 
} 

-(NSString *)pickerView:(UIPickerView *)pickerView 
     titleForRow:(NSInteger)row 
     forComponent:(NSInteger)component 
{ 
    return[pickerData objectAtIndex:row]; 
} 
+0

我也有麻烦驳回选择器作为好吧,如果有人想阐明这一点。如果你不能说我对Xcode真的很陌生(并且对一般编程知之甚少) – Zeff520

+0

与其他UIView一样,你可以为它的alpha或frame位置设置动画,我不认为它有一个内置的隐藏/显示机制。 –

回答

2

编辑, 帮助解散你的选择器, 使得它的一个实例变种,声明你的选择器的界面,

MyClass.h

@interface MyClass:UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>{ 
UIPickerView *picker 
} 

MyClass.m

@interface MyClass() 
property (nonatomic, retain) *selectedVal; //make it a NSString 
@end 



-(IBAction)UITextFieldEditingDidBegin 
{ 

    picker = [[UIPickerView alloc] 
          initWithFrame:CGRectMake(0, 244, 320, 270)]; 
    picker.delegate = self; 
    picker.dataSource = self; 
    [self.view addSubview:picker]; 
    //[picker release]; //Place your picker release in the dealloc method 

} 

你要实现对选择器的代表,

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
self.selectedVal = [pickerData objectAtIndex:row] 
NSLog(@"Selected option: %@. ", self.selectedVal); 
} 

然后在你完成按钮,你有你的财产所选择的VAL使用

-(IBAction)donePressed 
{ 


NSString *title = [[NSString alloc] initWithFormat: 
        @"You selected %@!", self.selectedVal]; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title 
               message : @"Thank you for choosing." 
               delegate:nil 
            cancelButtonTitle :@"Okay!"    
            otherButtonTitles :nil]; 
[alert show]; 
[alert release]; //I noticed you release the picker, so not using ARC, so release    alert!! 
[picker resignFirstResponder]; 

//after done, remove the picker from the view 
[picker removeFromSuperview]; 

} 
+0

非常感谢你!如果你愿意回答,我还有一个问题,即使一切都行得通。选择器仍然没有选择器栏悬停在当前选定的值上,尽管它确实将中间的一个识别为当前选定的值。你知道它为什么没有显示或如何显示? – Zeff520

相关问题