我是初学者,但一直在努力构建这个应用程序。我问过另一个问题:mapkit and table view sample code - iPhone SDK
我能够将(半)功能的tableview和mapview组合在一起。但是,我不确定如何调用mapview注释来执行numberOfRowsInSection或cellForRowAtIndexPath。
cellForRowAtIndexPath我确定没有正确调用,但我认为它是numberOfRowsInSection和cellForRowAtIndexPath的组合..但说实话,我已经尝试(并且失败)3周并且在我之前阅读所有内容问了这个问题。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//return [[mapView annotations] count];
return 1; }
所以我试图使用mapview注释的计数,但我甚至不确定这是否有效。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell =[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]autorelease];
}
NSMutableArray *annotations = [[NSMutableArray alloc] init];
//i'm sure the entire block below is pretty awful but i'm at a standstill
for (MapLocation *annotation in [mapView annotations])
{
[annotations addObject:annotation];
cell.textLabel.text = [[annotations objectAtIndex:indexPath.row]title];
}
return cell; //i'm pretty sure this shouldn't be here
}
如果需要任何其他代码来帮助解释我的情况,请告诉我。
答案 0 :(得分:0)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//return [[mapView annotations] count];
return 20;}
所以我知道我一次只有20个注释。这仍然不理想,但它的工作原理
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell =[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:CellIdentifier]autorelease];}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell =[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]autorelease];
}
NSMutableArray *annotations = [[NSMutableArray alloc] init];
if(indexPath.row < [[mapView annotations] count])
{
for (MapLocation *annotation in [mapView annotations])
{
[annotations addObject:annotation];
}
cell.textLabel.text = [[annotations objectAtIndex:indexPath.row]title];
}
return cell;}
使用注释信息填充tableview。我通过与Serban Porumbescu一起观看UCDavis课程找到了我的解决方案(他正在讨论桌面视图和对象)。