1

私と友人グループは、技術クラスのプロジェクト用に iPhone アプリを作成しています。私たちのアプリは、私たちの地域のさまざまな高校のスポーツ イベントの場所へのナビゲーションに使用されます。現在、学校とスポーツのすべての組み合わせを制御するために PickerView を使用しています。ピッカーには、学校用とスポーツ用の 2 つのコンポーネントがあります。MapView も既にセットアップされています。

ピッカー ビューからの出力を使用して、さまざまな学校/スポーツの組み合わせすべてにピンを配置する方法を考えています。以下のコードでわかるように、現在、PickerView からの出力を受け取るための if/then ステートメントが大量にありますが、最終的にはそれも小さくしたいと考えています。

ピッカー出力のコードは次のとおりです。

    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
int x = [pickerView selectedRowInComponent:0]; NSLog(@"Row 1: %i", x);
int y = [pickerView selectedRowInComponent:1]; NSLog(@"Row 2: %i", y);

//Blue Ridge
if (x == 0 && y == 0)
    {NSLog(@"Blue Ridge Basketball");}

else if (x == 0 && y == 1)
    {NSLog(@"Blue Ridge Basketball");}

else if (x == 0 && y == 2)
    {NSLog(@"Blue Ridge Cross Country");}

else if (x == 0 && y == 3)
    {NSLog(@"Blue Ridge Football");}

else if (x == 0 && y == 4)
    {NSLog(@"Blue Ridge Golf");}

else if (x == 0 && y == 5)
    {NSLog(@"Blue Ridge Soccer");}

else if (x == 0 && y == 6)
    {NSLog(@"Blue Ridge Softball");}

else if (x == 0 && y == 7)
    {NSLog(@"Blue Ridge Track");}

else if (x == 0 && y == 8)
    {NSLog(@"Blue Ridge Volleyball");}

else if (x == 0 && y == 9)
    {NSLog(@"Blue Ridge Wrestling");}

//DeeMack
   else if (x == 1 && y == 0)
    {NSLog(@"DeeMack Baseball");}

   else if (x == 1 && y == 1)
    {NSLog(@"DeeMack Basketball");}

   else if (x == 1 && y == 2)
    {NSLog(@"DeeMack Cross Country");}

   else if (x == 1 && y == 3)
    {NSLog(@"DeeMack Football");}

   else if (x == 1 && y == 4)
    {NSLog(@"DeeMack Golf");}

   else if (x == 1 && y == 5)
    {NSLog(@"DeeMack Soccer");}

   else if (x == 1 && y == 6)
    {NSLog(@"DeeMack Softball");}

   else if (x == 1 && y == 7)
    {NSLog(@"DeeMack Track");}

   else if (x == 1 && y == 8)
    {NSLog(@"DeeMack Volleyball");}

   else if (x == 1 && y == 9)
    {NSLog(@"DeeMack Wrestling");}

}

...など、この形式はさらに 11 の学校で継続されます。

これらの出力を使用してマップ上にピンをドロップする方法、またはこのコードを短くするためのアイデアは大歓迎です。また、私たちはコーディングに非常に慣れていないことに注意することも重要です。ありがとう!

4

1 に答える 1

0

コードを短くするには、高校名を含む配列とスポーツを含む配列の 2 つの配列を維持するだけです。したがって、コントローラーのプロパティとして2つのNSArrayを作成します

@property (strong, nonatomic) NSArray *highSchools;
@property (strong, nonatomic) NSArray *sports;

次に、viewDidLoadメソッドで次のようにします。

self.highSchools = [NSArray arrayWithObjects:@"Blue Ridge", @"DeeMack," nil];
self.sports = [NSArray arrayWithObjects:@"Baseball", @"BasketBall", @"Cross Country", nil];

したがって、ピッカーデリゲートメソッドは次のようになります::

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    int x = [pickerView selectedRowInComponent:0]; NSLog(@"Row 1: %i", x);
    int y = [pickerView selectedRowInComponent:1]; NSLog(@"Row 2: %i", y);

    NSLog(@"%@ %@", [self.highSchools objectAtIndex:x], [self.sports objectAtIndex:y]);
}

ここで、ピンを配置するために、ピンを配置する方法または場所、およびピンが何を表すかという質問からは明確ではありません。選択した学校の場所で、学校とスポーツの組み合わせに応じて、マップ上に 1 つのピンをドロップしたいようです。そうですか?

于 2013-02-13T22:09:41.853 に答える