制作一个使用PickerView放置pin的应用程序



我和一群朋友正在为我们技术类的一个项目创建一个iPhone应用程序。我们的应用程序将用于导航到我们地区的不同高中体育赛事地点。我们目前正在使用PickerView来控制学校和体育的所有组合。拾取器有两个组成部分,一个用于学校,另一个用于体育。我们已经设置了MapView。

我们想知道如何使用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所学校继续存在。

任何关于如何使用这些输出在地图上放下大头针的想法,或者缩短代码的想法,都将不胜感激。同样重要的是要注意,我们都是编码的新手,所以越简单越好。谢谢

为了缩短代码,您只需要维护两个数组,一个包含高中名称,另一个包含体育项目。因此,创建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];

因此,现在您的picker委托方法将简化为::

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

现在,对于放置大头针,还不清楚你想如何或在哪里放置它们,以及大头针代表什么。根据所选学校所在地的学校/运动组合,你似乎想在地图上留下一个徽章。是这样吗?

最新更新