当我开始时我不知道如何设置数据库所以我有80个注释都看起来像这样
workingCoordinate.latitude = 50.795825;
workingCoordinate.longitude = -1.103139;
MainViewAnnotation *Levant = [[MainViewAnnotation alloc] initWithCoordinate:workingCoordinate];
[Levant setTitle:@"Levant"];
[Levant setSubtitle:@"Unit R09, Gunwharf Quays"];
[Levant setAnnotationType:MainViewAnnotationTypePortsmouth];
[mapView addAnnotation:Levant];
它们通过MainViewAnnotationType分组到22个城市,编码如下:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 21;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if(section == MainViewAnnotationTypeBirmingham)
{
return @"Birmingham";
}
else if(section == MainViewAnnotationTypePortsmouth)
{
return @"Portsmouth";
}
return nil;
}
然后将注释放入TableView,就像这样;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSMutableArray *annotations = [[NSMutableArray alloc] init];
if(indexPath.section == 0)
{
for(MainViewAnnotation *annotation in [mapView annotations])
{
if(![annotation isKindOfClass:[MKUserLocation class]])
{
if([annotation annotationType] == MainViewAnnotationTypeBirmingham)
{
[annotations addObject:annotation];
}
}
}
cell.textLabel.text = [[annotations objectAtIndex:indexPath.row] title];
}
...
else if(indexPath.section == 17)
{
for(MainViewAnnotation *annotation in [mapView annotations])
{
if(![annotation isKindOfClass:[MKUserLocation class]])
{
if([annotation annotationType] == MainViewAnnotationTypePortsmouth)
{
[annotations addObject:annotation];
}
}
}
cell.textLabel.text = [[annotations objectAtIndex:indexPath.row] title];
}
return cell;
}
and then when a cell is clicked, will zoom in on the annotation.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
for(MainViewAnnotation *annotation in [mapView annotations])
{
if([[[[tableView cellForRowAtIndexPath:indexPath] textLabel] text] isEqualToString:[annotation title]])
{
[mapView setRegion:MKCoordinateRegionMake([annotation coordinate], MKCoordinateSpanMake(.003, .003)) animated:YES];
}
}
}
我的问题是,我希望能够通过他们的城市或他们的注释名称来搜索我的注释。我的界面中已经有一个搜索栏控制器,它已连接到我的tableview,只是没有编写任何代码。 我希望隐藏搜索,除非我点击搜索按钮然后在单击一个单元格时隐藏。
Xcode的新功能,非常感谢包括一些代码示例在内的任何帮助。
答案 0 :(得分:0)
我所做的是不是以编程方式创建我的UITableView,而是使用Interface Builder。创建自己的自定义ViewController并在UITableView中添加。不要忘记设置(通过界面构建器)委托和数据源。之后我认为您可能更容易管理隐藏/显示搜索栏。 希望这可以提供帮助。