2

私は非常に新しい XCode です。Picker View を使用していて、1 か所で行き詰まりました。2 つのコンポーネントを持つピッカー ビューがあります。そして、私は3つの配列を持っています。配列、配列 1、配列 2。

今、私が達成したいことはそれです。コンポーネント 0 で配列の最初のオブジェクトが選択されると、2 番目のコンポーネントは配列 1 によって取り込まれます。そして、2 番目のオブジェクトが最初のコンポーネントの配列から選択されると。2 番目のコンポーネントがリロードされ、Array2 によって設定されます。

私はこれを達成する方法について非常に混乱しています。

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

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

- (NSString *)pickerView:(UIPickerView *)pickerView
         titleForRow:(NSInteger)row
        forComponent:(NSInteger)component
{
if (component == 0)
return [Array objectAtIndex:row];
else 
    return [[ArraysOFArrays objectAtIndex:row]objectAtIndex:0 ]; 
 //ArraysOFArrays = Array1 & Array2
[technologyPicker reloadComponent:1];
}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
  inComponent:(NSInteger)component
{   
    if ((component == 0) && (row ==0))
    { 
    if (component == 1)
    {
        [Array1 objectAtIndex:0];

    }
    selectTechnology.text = [technologyData objectAtIndex:row];
   [technologyPicker reloadComponent:1]; 
}

if ((component == 0) && (row ==1))
{ 
    if (component == 1)
    {
    [Array2 objectAtIndex:0];

    }

    [technologyPicker reloadComponent:1]; 
}


}
4

1 に答える 1

1

私はあなたのコードを変更しましたこれを試してください。int 型のグローバル変数 "selected" を取得し、その値を 0 に初期化します。ところで、この「technologyData」とは何ですか?

コンポーネント数

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

コンポーネントの行数

- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
  {
     if (component==0)
         return [Array count];
     else
     {
          if(selected==0)
              [[ArraysOFArrays objectAtIndex:0]count];
          else
              [[ArraysOFArrays objectAtIndex:1]count];   
     }
}

行のタイトル

- (NSString *)pickerView:(UIPickerView *)pickerView
         titleForRow:(NSInteger)row
        forComponent:(NSInteger)component
{
if (component == 0)
    return [Array objectAtIndex:row];
else 
    return [[ArraysOFArrays objectAtIndex:selected]objectAtIndex:row]; 
 //ArraysOFArrays = Array1 & Array2
}

コンポーネントの行を選択しました

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
  inComponent:(NSInteger)component
{   
    if (component == 0)
    { 
        if (row == 0)
        {
            selected=0;
            [technologyPicker reloadComponent:1];
        }
        else
        {
             selected=1;
            [technologyPicker reloadComponent:1];
        }
     }
     else
        **selectTechnology.text = [[ArraysOFArrays objectAtIndex:selected]objectAtIndex:row];**

}
于 2012-11-05T07:07:21.157 に答える