2013-02-13 50 views
1

我和一羣朋友正在爲我們的技術類中的項目創建一個iPhone應用程序。我們的應用程序將用於導航到我們地區不同的高中體育賽事地點。我們目前使用PickerView來控制學校和運動的所有組合。選取器有兩個部分,一個用於學校,另一個用於運動。我們也已經設置了MapView。製作一個使用PickerView放置引腳的應用程序

我們想知道如何使用Picker View的輸出來放置所有不同學校/運動組合的針腳。正如你在下面的代碼中看到的那樣,我們現在有大量的if/then語句來接收PickerView的輸出,但是最終還是希望減小它的體積。

下面是選擇器輸出碼:

- (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多所學校。

有關我們如何使用這些輸出來放置地圖上的針腳或想法縮短此代碼的任何想法都將不勝感激。另外需要注意的是,我們對編碼都很陌生,所以越簡單越好。謝謝!

回答

0

爲了縮短代碼,您只需要維護2個數組,一個包含高中名稱,另一個包含運動。 因此,創建2個NSArrays作爲控制器的性能

@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]); 
} 

現在,爲了放置引腳,它的問題不清楚,確切地說您要如何或在何處他們和什麼是針腳。看起來你想在地圖上放置一個別針,取決於所選學校所在地的學校/運動組合。是對的嗎?

+0

是的,我們希望放棄一個標有「藍嶺」標題的註釋,然後在體育賽事地點(即棒球場或橄欖球場)爲字幕添加「棒球」的註釋。我們這樣做的主要問題是從選取器的輸出到丟棄一個pin。 – HHSEAST 2013-02-14 19:34:27

+0

那麼你有什麼想法嗎? – HHSEAST 2013-02-20 19:28:47

相關問題