gpt4 book ai didi

objective-c - UITableViewCell 中的 MKMapView

转载 作者:行者123 更新时间:2023-12-01 19:15:30 24 4
gpt4 key购买 nike

我有一个 MKMapViewUITableViewCell禁用用户交互。当我滚动 UITableViewCell它刷新所有 MKMapViews .

我在这里阅读了其他答案,一个说不要使用 dequeueReusableCellWithIdentifier (我不是)另一个对 deallocmapView (我正在使用ARC)。我不想使用图像。

我应该怎么做才能防止 MKMapView当我滚动我的 ScrollView 时重新加载?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

//UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ANFeedCell"];
ANFeedTableViewCell *cell = nil;
if (cell == nil) {
// Load the top-level objects from the custom cell XIB.
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ANFeedTableViewCell" owner:self options:nil];
// Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain).
cell = [topLevelObjects objectAtIndex:0];

MKMapView *mapView = (MKMapView*)[cell viewWithTag:2];

//Takes a center point and a span in miles (converted from meters using above method)
CLLocationCoordinate2D startCoord = CLLocationCoordinate2DMake(37.766997, -122.422032);
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:MKCoordinateRegionMakeWithDistance(startCoord, MilesToMeters(0.5f), MilesToMeters(0.5f))];
[mapView setRegion:adjustedRegion animated:YES];


}
return cell;
}

最佳答案

问题是您正在为每个表格单元格初始化新单元格。
所以你的 MapView 每次都会重置。

这也会导致内存问题,因为在表格中上下滚动几下会耗尽手机的内存。

坚持使用可重复使用的单元格,但每次都为单元格配置 map View 区域。

这是一个很好的示例,可以帮助您入门:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CustomCellIdentifier = @"MyCustomTableCell";
ANFeedTableViewCell *cell = (ANFeedTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier];

if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ANFeedTableViewCell"
owner:self options:nil];
for (id oneObject in nib)
if ([oneObject isKindOfClass:[CustomCell class]])
cell = (ANFeedTableViewCell *)oneObject;
}



MKMapView *mapView = (MKMapView*)[cell viewWithTag:2];

//Takes a center point and a span in miles (converted from meters using above method)
CLLocationCoordinate2D startCoord = CLLocationCoordinate2DMake(37.766997, -122.422032);
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:MKCoordinateRegionMakeWithDistance(startCoord, MilesToMeters(0.5f), MilesToMeters(0.5f))];
[mapView setRegion:adjustedRegion animated:YES];

return cell;
}

这段代码的不同之处在于,每次显示单元格时都会配置 map View ,而不仅仅是在初始化时。
当然,您应该更改代码以从数据源(即 NSArray)动态接受坐标。

关于objective-c - UITableViewCell 中的 MKMapView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13701516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com