Objective c UIPickerView未重新加载

Objective c UIPickerView未重新加载,objective-c,nsmutablearray,uipickerview,Objective C,Nsmutablearray,Uipickerview,我在示例应用程序中使用UIPickerView,我遇到了一个问题,除了第一行之外,它不会重新加载数据。我实际上编码为独立分配选择器的第一行,但其他行都加载了数组。UIPickerView的值应在用户每次按下按钮时重新加载,但除第一行外,所有值均未按预期进行更改,因为我无法找出哪里出错。下面是我的代码 //PickerView Code.... - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ if (

我在示例应用程序中使用UIPickerView,我遇到了一个问题,除了第一行之外,它不会重新加载数据。我实际上编码为独立分配选择器的第一行,但其他行都加载了数组。UIPickerView的值应在用户每次按下按钮时重新加载,但除第一行外,所有值均未按预期进行更改,因为我无法找出哪里出错。下面是我的代码

//PickerView Code....
 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
if (pickerView.tag == 1) {
    return 1;
}
else if (pickerView.tag == 2)
{
    return 1;
}
return 0;
 }
  - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (pickerView.tag == 1) {
    return [self.CityList count];
}
else
{
    return [self.KmArray count];
}
return 0;
  }


 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
 {
return [self.CityList objectAtIndex:row];
 }

    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
  {
if (pickerView.tag == 1) {
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 44)];
    // label.backgroundColor = [UIColor grayColor];
    label.textColor = [UIColor whiteColor];
    label.font = [UIFont fontWithName:@"HelveticaNeue" size:20];
    label.textAlignment = NSTextAlignmentCenter;
    label.text = self.CityList[row];
    return label;
}
else if (pickerView.tag == 2)
{

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 44)];
    // label.backgroundColor = [UIColor grayColor];
    label.textColor = [UIColor whiteColor];
    label.font = [UIFont fontWithName:@"HelveticaNeue" size:20];
    label.textAlignment = NSTextAlignmentCenter;
    if (row == 0) {
        if ([_currentCity isEqual:@"Chennai"])
        {
            __weak NSString *lbl1 = [NSString stringWithFormat:@"1.8 Km"];
            lbl1 = [lbl1 stringByAppendingString:@"              "];
            lbl1 = [lbl1 stringByAppendingString:@"25.00"];
            label.text = lbl1;
            return label;
        }
        else if ([_currentCity isEqual:@"Banglore"])
        {
            __weak NSString *lbl1 = [NSString stringWithFormat:@"1.9 Km"];
            lbl1 = [lbl1 stringByAppendingString:@"              "];
            lbl1 = [lbl1 stringByAppendingString:@"25.00"];
            label.text = lbl1;
            return label;
        }
        else if ([_currentCity isEqual:@"Delhi"])
        {
            __weak NSString *lbl1 = [NSString stringWithFormat:@"2.0 Km"];
            lbl1 = [lbl1 stringByAppendingString:@"              "];
            lbl1 = [lbl1 stringByAppendingString:@"25.00"];
            label.text = lbl1;
            return label;
        }
        else if ([_currentCity isEqual:@"Mumbai"])
        {
            __weak NSString *lbl1 = [NSString stringWithFormat:@"1.5 Km"];
            lbl1 = [lbl1 stringByAppendingString:@"              "];
            lbl1 = [lbl1 stringByAppendingString:@"15.00"];
            label.text = lbl1;
            return label;
        }
        else if ([_currentCity isEqual:@"Puducherry"])
        {
            __weak NSString *lbl1 = [NSString stringWithFormat:@"1.8 Km"];
            lbl1 = [lbl1 stringByAppendingString:@"              "];
            lbl1 = [lbl1 stringByAppendingString:@"25.00"];
            label.text = lbl1;
            return label;
        }
        else if ([_currentCity isEqual:@"Pune"])
        {
            __weak NSString *lbl1 = [NSString stringWithFormat:@"1.5 Km"];
            lbl1 = [lbl1 stringByAppendingString:@"              "];
            lbl1 = [lbl1 stringByAppendingString:@"17.00"];
            label.text = lbl1;
            return label;
        }
    }
    else
    {
    __weak NSString *lbl1 = [NSString stringWithFormat:@"%@", self.KmArray[row]];
    lbl1 = [lbl1 stringByAppendingString:@"              "];
    lbl1 = [lbl1 stringByAppendingString:[NSString stringWithFormat:@"%@", self.fareArray[row]]];
    label.text = lbl1;
    return label;
    }
}
return 0;
}
  - (IBAction)GetFare:(id)sender
   {
[self.ScrollView setAlpha:1];
NSInteger row = [_SelectCity selectedRowInComponent:0];
self.currentCity = [[NSString alloc] initWithFormat:@"%@", [_CityList objectAtIndex:row]];
NSLog(@"Selected city is %@", _currentCity);
[self populatePickerArray];
[_FareList reloadAllComponents];
}
  -(void)populatePickerArray
{
float z=0.0, x = 0.0, ch = 25.0, mu = 15, pu = 17;
float y = 0.0, chd = 1.9, del = 2.1, mud = 1.6, blore = 2.0, pud = 1.6, pudd = 1.9;
if ([_currentCity isEqual:@"Chennai"])
{
    x = ch;
    y = chd;
    z = 1.2;
    [self.FareList reloadAllComponents];
}
else if ([_currentCity isEqual:@"Banglore"])
{
    x = ch ;
    y = blore;
    z = 1.3;
    [self.FareList reloadAllComponents];

}
else if ([_currentCity isEqual:@"Delhi"])
{
    x = ch ;
    y = del;
    z = 0.8;
    [self.FareList reloadAllComponents];

}
else if ([_currentCity isEqual:@"Mumbai"])
{
    x = mu ;
    y = mud;
    z = 1.0;
    [self.FareList reloadAllComponents];

}
else if ([_currentCity isEqual:@"Pune"])
{
    x = pu ;
    y = pud;
    z = 1.16;
    [self.FareList reloadAllComponents];

}
else
{
    x = ch;
    y = pudd;
    z = 1.5;
    [self.FareList reloadAllComponents];
}
float i = x;
for (float weight = y; weight <= 25.01; weight = weight + 0.1)
{
    i = i + z;
    //[_KmArray addObject:[NSNumber numberWithFloat:weight]];
    NSString *weightString = [NSString stringWithFormat:@"%0.1f Km", weight];
    [_KmArray addObject:weightString];
    NSString *fareString = [NSString stringWithFormat:@"%0.2f", i];
    [_fareArray addObject:fareString];
}
}
//PickerView代码。。。。
-(NSInteger)pickerView中组件的编号:(UIPickerView*)pickerView{
if(pickerView.tag==1){
返回1;
}
else if(pickerView.tag==2)
{
返回1;
}
返回0;
}
-(NSInteger)pickerView:(UIPickerView*)pickerView行数组件:(NSInteger)组件
{
if(pickerView.tag==1){
返回[self.CityList count];
}
其他的
{
返回[self.KmArray count];
}
返回0;
}
-(NSString*)pickerView:(UIPickerView*)pickerView标题箭头:(NSInteger)组件行:(NSInteger)组件
{
返回[self.CityList objectAtIndex:row];
}
-(UIView*)pickerView:(UIPickerView*)pickerView视图for行:(NSInteger)行for组件:(NSInteger)组件重用视图:(UIView*)视图
{
if(pickerView.tag==1){
UILabel*label=[[UILabel alloc]initWithFrame:CGRectMake(0,0,pickerView.frame.size.width,44)];
//label.backgroundColor=[UIColor grayColor];
label.textColor=[UIColor-whiteColor];
label.font=[UIFont fontWithName:@“HelveticaNeue”大小:20];
label.textAlignment=NSTextAlignmentCenter;
label.text=self.CityList[row];
退货标签;
}
else if(pickerView.tag==2)
{
UILabel*label=[[UILabel alloc]initWithFrame:CGRectMake(0,0,pickerView.frame.size.width,44)];
//label.backgroundColor=[UIColor grayColor];
label.textColor=[UIColor-whiteColor];
label.font=[UIFont fontWithName:@“HelveticaNeue”大小:20];
label.textAlignment=NSTextAlignmentCenter;
如果(行==0){
如果([[u currentCity isEqual:@“钦奈])
{
__弱NSString*lbl1=[NSString stringWithFormat:@“1.8公里];
lbl1=[lbl1 stringByAppendingString:@”“];
lbl1=[lbl1 stringByAppendingString:@“25.00”];
label.text=lbl1;
退货标签;
}
如果([[u currentCity isEqual:@“Banglore”])
{
__弱NSString*lbl1=[NSString stringWithFormat:@“1.9公里];
lbl1=[lbl1 stringByAppendingString:@”“];
lbl1=[lbl1 stringByAppendingString:@“25.00”];
label.text=lbl1;
退货标签;
}
否则如果([[u currentCity isEqual:@“德里”])
{
__弱NSString*lbl1=[NSString stringWithFormat:@“2.0公里];
lbl1=[lbl1 stringByAppendingString:@”“];
lbl1=[lbl1 stringByAppendingString:@“25.00”];
label.text=lbl1;
退货标签;
}
如果([[u currentCity isEqual:@“孟买”])
{
__弱NSString*lbl1=[NSString stringWithFormat:@“1.5公里];
lbl1=[lbl1 stringByAppendingString:@”“];
lbl1=[lbl1 stringByAppendingString:@“15.00”];
label.text=lbl1;
退货标签;
}
否则如果([[u currentCity isEqual:@“Puducherry”])
{
__弱NSString*lbl1=[NSString stringWithFormat:@“1.8公里];
lbl1=[lbl1 stringByAppendingString:@”“];
lbl1=[lbl1 stringByAppendingString:@“25.00”];
label.text=lbl1;
退货标签;
}
如果([[u currentCity isEqual:@“Pune”])
{
__弱NSString*lbl1=[NSString stringWithFormat:@“1.5公里];
lbl1=[lbl1 stringByAppendingString:@”“];
lbl1=[lbl1 stringByAppendingString:@“17.00”];
label.text=lbl1;
退货标签;
}
}
其他的
{
__弱NSString*lbl1=[NSString stringWithFormat:@“%@”,self.KmArray[row]];
lbl1=[lbl1 stringByAppendingString:@”“];
lbl1=[lbl1 stringByAppendingString:[NSString stringWithFormat:@“%@”,self.fareArray[row]];
label.text=lbl1;
退货标签;
}
}
返回0;
}
-(iAction)GetFare:(id)发件人
{
[self.ScrollView setAlpha:1];
NSInteger行=[\u SelectCity selectedRowUncomponent:0];
self.currentCity=[[NSString alloc]initWithFormat:@“%@,[[u CityList objectAtIndex:row]];
NSLog(@“所选城市为%@”,当前城市);
[自填充PickerArray];
[_票价表重新加载所有组件];
}
-(void)populatePickerArray
{
浮点数z=0.0,x=0.0,ch=25.0,mu=15,pu=17;
浮动y=0.0,chd=1.9,del=2.1,mud=1.6,blore=2.0,pud=1.6,pudd=1.9;
如果([[u currentCity isEqual:@“钦奈])
{
x=ch;
y=chd;
z=1.2;
[self.FareList reloadAllComponents];
}
如果([[u currentCity isEqual:@“Banglore”])
{
x=ch;
y=blore;
z=1.3;
[self.FareList reloadAllComponents];
}
否则如果([[u currentCity isEqual:@“德里”])
{
x=ch;
y=del;
z=0.8;
[自付清单重新加载所有组件];
}
如果([[u currentCity isEqual:@“孟买”])
{
x=mu;
y=泥浆;
z=1.0;
[self.FareList reloadAllComponents];
}
如果([[u currentCity isEqual:@“Pune”])
{
x=pu;
y=pud;
z=1.16;
[self.FareList reloadAllComponents];
}
其他的
{
x=ch;
y=布丁;
z=1.5;
[self.FareList reloadAllComponents];
}
浮点数i=x;

对于(float weight=y;weight确保调用了populatePickerArray,并在调用
后立即在选择器视图上重新加载所有组件

除此之外,您的代码是凌乱的和冗余的。您应该考虑为选择器视图创建一个单独的对象,使代码更可读。 请注意,惯例是变量不以大写字母开头。因此,

cityList
,而不是
Cit