0

我从另一个开发人员那里获取了一些我试图纠正的代码。问题之一是:

我有 2 个选择器,它们用选择器中的选定行填充文本框。

如果选择了Picker 1(命名:type),则选择的行。SAYROW 3,在显示Picker的下一个Picker(命名:FlueType)上的该行默认为该行。

如何让第二个选择器不受第一个选择器行选择的影响?

我看过[picker reloadComponent:0];我看过堆栈和谷歌,似乎找不到任何适合这个问题的东西。

我还尝试[picker selectRow:0 inComponent:0 animated:NO]了 ViewDidLoad 方法,希望它将我所有的选择器设置为第一行值,这都是我想要做的。

为堆积如山的代码道歉,我试图将其分离到上下文中

      /////////////////////picker action////////////////////////

      -(void)flueTypeBtnClicked//:(id)sender
       {    

   [flueTypeBtn.titleLabel setTextColor:[UIColor blackColor]];

currentSelectedIndex = flueTypeBtn.tag;
[makeTxt resignFirstResponder];
[modelTxt resignFirstResponder];
[locationTxt resignFirstResponder];
[oprPressureMBarTxt resignFirstResponder];

[picker setHidden:NO];
[picker reloadComponent:0];




[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
self.ToolsView.frame = CGRectMake(0, 200, 320, 260);

extern GasCertificateAppViewController *viewController;
[viewController.view addSubview:self.ToolsView];


[UIView commitAnimations];
   }




 -(void)typeBtnClicked//:(id)sender
 {  

 [typeBtn.titleLabel setTextColor:[UIColor blackColor]];


currentSelectedIndex = typeBtn.tag;
[makeTxt resignFirstResponder];
[modelTxt resignFirstResponder];
[locationTxt resignFirstResponder];
[oprPressureMBarTxt resignFirstResponder];




[picker setHidden:NO];
[picker reloadComponent:0];

//NSLog(@"In type btn Clicked:");
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
self.ToolsView.frame = CGRectMake(0, 200, 320, 260);
extern GasCertificateAppViewController *viewController;
[viewController.view addSubview:self.ToolsView];

    [UIView commitAnimations];


    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////more code here///////////////////////


  - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
 {

if (textField.tag == 1 )
{
    [self typeBtnClicked];
    return NO;
}
else if(textField.tag == 3)
{
    [self flueTypeBtnClicked];
    return NO;
}

CGPoint offset = CGPointMake(0, textField.frame.origin.y - textField.frame.size.height);
[self.screenScrollView setContentOffset: offset animated: YES];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];

self.ToolsView.frame = CGRectMake(0, 200, 320, 260);
extern GasCertificateAppViewController *viewController;
[viewController.view addSubview:self.ToolsView];

[UIView commitAnimations];
    return YES;
   }


      //////////////

   -(void) fillData
  {
extern Survey *survey;
ApplianceTest *test = [survey.applianceTestArray objectAtIndex:testId];

if(test.type != nil)
    [self.typeTxt setText:test.type];
   // [self.typeBtn setTitle:test.type forState:UIControlStateNormal]; 
if(test.make != nil)
    [self.makeTxt setText:test.make];
if(test.model != nil)
    [self.modelTxt setText:test.model];
if(test.location != nil)
    [self.locationTxt setText:test.location];
if(test.flue_type != nil)
    [self.flueTypeTxt setText:test.flue_type];
    //[self.flueTypeBtn setTitle:test.flue_type forState:UIControlStateNormal];    if(test.operating_pressure_mbar_or_heat_input_kwh != nil)
    [self.oprPressureMBarTxt setText:test.operating_pressure_mbar_or_heat_input_kwh];

if([test.safety_device_correct isEqualToString:@"Yes"])
    [self.segtCtrl setSelectedSegmentIndex:0];
else
    if([test.safety_device_correct isEqualToString:@"No"])
        [self.segtCtrl setSelectedSegmentIndex:1];
        else
            [self.segtCtrl setSelectedSegmentIndex:2];


    }
   -(IBAction)bgTouched:(id)sender
     {        


CGPoint offset = CGPointMake(0, 0);
[self.screenScrollView setContentOffset: offset animated: YES];[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];

self.ToolsView.frame = CGRectMake(0, 500, 320,260);
//[self.ToolsView removeFromSuperview];

//self.view.frame = CGRectMake(0, 0, 320,  372 ); 

[makeTxt resignFirstResponder];
[modelTxt resignFirstResponder];
[locationTxt resignFirstResponder];
[oprPressureMBarTxt resignFirstResponder];


[UIView commitAnimations];
 }
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////


   - (void)viewDidLoad {
   [super viewDidLoad];

//segment control selected Index = 2;



segtCtrl.selectedSegmentIndex = 2;

navigationTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 0, 200, 25)];
navigationTitleLabel.textAlignment = UITextAlignmentCenter;
navigationTitleLabel.font= [UIFont fontWithName:@"Futura" size:18];
navigationTitleLabel.backgroundColor = [UIColor clearColor];
navigationTitleLabel.textColor = [UIColor whiteColor];
navigationTitleLabel.text = @"Appliance Test 1/3";

self.navigationItem.titleView = navigationTitleLabel;


self.screenScrollView.frame = CGRectMake(0, 0, 320, 370);
self.screenScrollView.contentSize = CGSizeMake(320, 600 + 200);
self.screenScrollView.clipsToBounds = YES;
self.screenScrollView.showsVerticalScrollIndicator = NO;
[self.view addSubview:self.screenScrollView];   


testId = [testIdStr intValue];
currentSelectedIndex = 0;

typeArray = [[NSMutableArray alloc] init];
[typeArray addObject:@""]; ///change 
[typeArray addObject:@"Boiler"];
[typeArray addObject:@"Cooker"];
[typeArray addObject:@"Fire"];
[typeArray addObject:@"Hob"]; ///change to hob


currentSelectedIndex = 0;
flueTypeArray = [[NSMutableArray alloc] init];
[flueTypeArray addObject:@""]; //change
[flueTypeArray addObject:@"OF"];
[flueTypeArray addObject:@"RS"];
[flueTypeArray addObject:@"FL"];



unitArray = [[NSMutableArray alloc] initWithObjects:@"MBar",@"KW/h",nil];
//self.navigationItem.title = @"Appliance Test 1/3";

//[typeTableView setHidden:YES];
//[flueTypeTableView setHidden:YES];

[segtCtrl setSelectedSegmentIndex:2];

extern Survey *survey;


    [self fillData];
[picker setHidden:YES];
self.ToolsView.frame = CGRectMake(0, 500, 320, 260);

  /////////////////

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

  - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:    (NSInteger)component
   {
if (currentSelectedIndex == 1)
{
    return [typeArray count];
}
else if(currentSelectedIndex == 3)
{
    return [flueTypeArray count];
}
else if(currentSelectedIndex == 7)
{
    return [unitArray count];   
}
else
{
    return 1;
}
   }


  - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row   forComponent:(NSInteger)component
    {
if (currentSelectedIndex == 1)
{
    if ([typeArray count] == 0)
    {
        return [NSString stringWithFormat: @"None"];

    }
    else
    {
    return [typeArray objectAtIndex:row];
    }
}
else if(currentSelectedIndex == 3)
{
    if ([flueTypeArray count] == 0)
    {
        return [NSString stringWithFormat: @"None"];

    }
else {


        return [flueTypeArray objectAtIndex:row];
    }
}
else if(currentSelectedIndex == 7)
{
    if ([unitArray count] == 0)
    {
        return [NSString stringWithFormat: @"None"];

    }
    else
    {
        return [unitArray objectAtIndex:row];
    }
}
 return @"";

 }
 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
 {
//      [gasSafeNoBtn setTitle:[NSString stringWithFormat:@"%d",[(NSNumber *) [gasSafeNoArray objectAtIndex:row]intValue]] forState:UIControlStateNormal];
extern Survey *survey;
if (currentSelectedIndex==1) 
{
    //typeTxt.text = [typeArray objectAtIndex:row];
    [typeBtn.titleLabel setTextColor:[UIColor blackColor]];
    [typeBtn setTitle:[typeArray objectAtIndex:row] forState:UIControlStateNormal];
    typeTxt.text  =[typeArray objectAtIndex:row] ;
}
else if(currentSelectedIndex == 3)
{
    //flueTypeTxt.text = [flueTypeArray objectAtIndex:row];
    [flueTypeBtn.titleLabel setTextColor:[UIColor blackColor]];

    [flueTypeBtn setTitle:[flueTypeArray objectAtIndex:row] forState:UIControlStateNormal];
    flueTypeTxt.text= [flueTypeArray objectAtIndex:row];
}
else if(currentSelectedIndex == 7)
{
    unitString = [[NSString alloc] initWithString:[unitArray objectAtIndex:row]];
//  NSLog(@"Unit String : %@", unitString);
    [unitBtn setTitle:[unitArray objectAtIndex:row] forState:UIControlStateNormal];
}
else {

}

 }

 - (void)dealloc {
[unitArray release];
[ToolsView release];
[toolBar release];
[nextBtn release];
[prevBtn release];
[doneBtn release];
[picker release];
    [super dealloc];

   }


   @end
4

1 回答 1

0

好的排序....添加

[picker selectRow:0 inComponent:0 animated:NO];

到呈现选择器的按钮操作方法

于 2012-10-12T11:44:11.157 回答