我正在尝试使用注释数组填充表格视图,但每次添加此代码时,XCode似乎都会给我一个断点。
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSMutableArray *annotations = [[NSMutableArray alloc] init];
if(indexPath.section == 0)
{
for(Location *annotation in [(MKMapView *)self annotations])
{
if(![annotation isKindOfClass:[MKUserLocation class]])
{
}
}
cell.textLabel.text = [[annotations objectAtIndex:indexPath.row] title];
}
return cell;
我的注释:
CLLocationCoordinate2D thecoordinate59;
thecoordinate59.latitude = 51.520504;
thecoordinate59.longitude = -0.106725;
Location *ann1 = [[Location alloc] init];
ann1.title =@"Antwerp";
ann1.coordinate = thecoordinate1;
NSMutableArray *annotations = [NSMutableArray arraywithObjects: ann.. ann59, nil];
[map addAnnotations:annotations];
最佳答案
在cellForRowAtIndexPath
中,您要声明一个名为annotations
的新局部变量,该变量与您在annotations
中创建的viewDidLoad
数组无关(我假设这是您添加注释的地方)。
然后在cellForRowAtIndexPath
中,此行:
for(Location *annotation in [(MKMapView *)self annotations])
失败,因为
annotations
中没有self
属性。在viewDidLoad
中,您声明了一个名为annotations
的局部变量,但该变量在该方法之外不可见或不可访问。上一行的另一个问题是,您正在将
self
转换为MKMapView *
。很有可能self
是UIViewController
。它包含一个 map 视图,但它本身不是一个。您需要首先在详细信息视图的类级别声明
annotations
数组,以便在所有方法中都可用。在详细视图.h文件中:@property (nonatomic, retain) NSMutableArray *annotations;
顺便说一句,我将其命名为其他名称,因此不会与 map 视图自己的
annotations
属性混淆。在.m中,将其合成:
@synthesize annotations;
在
viewDidLoad
中,像这样创建它:self.annotations = [NSMutableArray arraywithObjects...
[map addAnnotations:self.annotations];
在
numberOfRowsInSection
方法中,返回数组的计数:return self.annotations.count;
然后在
cellForRowAtIndexPath
中:if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
if(indexPath.section == 0)
{
cell.textLabel.text = [[self.annotations objectAtIndex:indexPath.row] title];
}
return cell;