我正在尝试使用我的注释数组填充我的表视图,但是当我添加此代码时,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];
答案 0 :(得分:2)
在cellForRowAtIndexPath
中,您声明了一个名为annotations
的新的本地变量,该变量与您在annotations
中创建的viewDidLoad
数组无关(我假设& #39;您要添加注释的地方)。
然后在cellForRowAtIndexPath
中,这一行:
for(Location *annotation in [(MKMapView *)self annotations])
失败,因为annotations
中没有self
属性。在viewDidLoad
中,您声明了一个名为annotations
的局部变量,但它在该方法之外不可见或无法访问。
上述问题的另一个问题是您将self
作为MKMapView *
投射。最有可能self
是UIViewController
。它包含一个地图视图,但本身并不是一个。
您需要先在详细信息视图的类级别声明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
数组刚刚在本地初始化了几个上面没有任何值的语句。??