注释和表视图

时间:2012-08-16 12:09:51

标签: objective-c ios uitableview mkmapview

我正在尝试使用我的注释数组填充我的表视图,但是当我添加此代码时,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];

2 个答案:

答案 0 :(得分:2)

cellForRowAtIndexPath中,您声明了一个名为annotations的新的本地变量,该变量与您在annotations中创建的viewDidLoad数组无关(我假设& #39;您要添加注释的地方)。

然后在cellForRowAtIndexPath中,这一行:

for(Location *annotation in [(MKMapView *)self annotations])

失败,因为annotations中没有self属性。在viewDidLoad中,您声明了一个名为annotations的局部变量,但它在该方法之外不可见或无法访问。

上述问题的另一个问题是您将self作为MKMapView *投射。最有可能selfUIViewController。它包含一个地图视图,但本身并不是一个。


您需要先在详细信息视图的类级别声明annotations数组,以便在所有方法中都可用。在详细视图.h文件中:

@property (nonatomic, retain) NSMutableArray *annotations;

顺便说一句,我将其命名为不同的名称,以免与地图视图的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;

答案 1 :(得分:0)

您正在报告该行的崩溃(我假设)

我看到的问题是崩溃原因

cell.textLabel.text = [[annotations objectAtIndex:indexPath.row] title];

annotations数组刚刚在本地初始化了几个上面没有任何值的语句。??