我正在尝试使用注释数组填充表格视图,但每次添加此代码时,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 *。很有可能selfUIViewController。它包含一个 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;

10-08 05:46