制作一个使用PickerView放置引脚的应用

时间:2013-02-13 19:57:38

标签: ios mkmapview uipickerview mkannotation mkannotationview

我和一群朋友正在为我们的技术课程中的项目创建一个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所学校。

关于我们如何使用这些输出来放置地图上的引脚或者使这些代码更短的想法,我们将非常感激。另外值得注意的是,我们对编码都很陌生,所以越简单越好。谢谢!

1 个答案:

答案 0 :(得分: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]);
}

现在,为了放置引脚,问题不清楚,确切地说,您想要放置它们的方式和位置以及引脚代表的内容。您可能希望在地图上放置一个图钉,具体取决于所选学校所在地的学校/运动组合。是吗?