2010-11-24 6 views
1

У меня есть MKMapView с прокруткой и пользовательским отключением в пределах UITableViewCell. Желаемый эффект (фактически статический образ карты в определенном месте) работает очень хорошо, но когда MKMapView дрейфует на экране и прокручивается (он прокручивается), он перезагружает карту, из-за которой приложение вызывает сбои. Я загрузил обычай UITableViewCell в как и любой другой UITableViewCell в cellForRowAtIndexPath:Остановить MKMapView от перезагрузки

if(indexPath.section == 0 && indexPath.row == 0) 
{ 
    MapTableViewCell *cell = (MapTableViewCell *)[tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"%@Map", cellIdentifier]]; 

    if(cell == nil) 
    { 
     cell = [[[MapTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier] autorelease]; 
    } 

    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MapTableViewCell" owner:self options:nil]; 

    for(id currentObject in topLevelObjects) 
    { 
     if([currentObject isKindOfClass:[UITableViewCell class]]) 
     { 
      cell = (MapTableViewCell *)currentObject; 
      break; 
     } 
    } 

    return cell; 
} 

Я обнаружил, что с этим текущим методом, если вы позволяете нагрузку изображения карты перед перемещением UITableView, то это нормально. Но если вы переместите его с экрана, прежде чем он закончит загрузку, он сработает! :(

Я просто хочу указать, что я не хочу иметь возможность управлять картой каким-либо образом или показывать какие-либо аннотации на нее. Я попытался сделать снимок экрана, скрыть его с экрана и отобразить этот снимок экрана как UIImageView в UITableViewCell, но это не было достаточно быстро

EDIT:.. Обновленный код Это полный код для этого метода является ли мой заказ TableViewCell Alloc неправильно здесь

+0

Непонятно, какого результата вы действительно хотите достичь. По приблизительной догадки, если делегатом MKMapView является ячейка, вам может потребоваться отменить делегат в -dealloc ячейки. Я также не могу понять, что должен делать ваш nib-load. – 2010-11-24 01:07:38

ответ

1

Благодаря дц для ответа (комментарий выше).

Что требовалось было для освобождения MKMapView в обычном методе dealloc UITableViewCell.

1

Попробуйте установить область из? map/область действия карты, которую вы хотите, а затем измените свойства userInteractionEnabled и zoomEnabled. Возможно, что-то вроде этого:

MKCoordinateRegion region; 
region.center = "location"; //a CLLocationCoordinate2D location of where ever 

MKCoordinateSpan span; 
span.latitudeDelta = 0.03; //desired size for both latDelta and lonDelta 
span.longitudeDelta = 0.03; 
region.span = span; 

[mapView setRegion:region animated:YES]; 

А потом свойства попробуйте следующее:

mapView.zoomEnabled = NO; 
mapView.userInteractionEnabled = NO; 
Смежные вопросы