2010-11-24 115 views
1

我有一個MKMapView與滾動和userInteraction禁用內UITableViewCell。所需效果(實際上是某個位置的地圖的靜態圖像)效果非常好,但當MKMapView在屏幕上移動(滾動)時,它會重新加載地圖,偶爾會導致應用程序崩潰。我已經裝的自定義UITableViewCell像任何其他UITableViewCellcellForRowAtIndexPath停止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之前,那麼它的確定。但是如果你在完成加載之前將它從屏幕上移開,它會崩潰! :(

我只想指出我不希望能夠以任何方式控制地圖或顯示任何註釋。我確實嘗試截圖地圖視圖,將其隱藏在屏幕上並顯示該屏幕截圖作爲UITableViewCell一個UIImageView但是這是不夠快

編輯:!。更新後的代碼這是此方法的全部代碼是我的自定義TableViewCell頁頭不正確這裏

+0

不明顯的結果你實際上想要實現。粗略猜測,如果MKMapView的委託是單元格,那麼您可能需要在單元格的-dealloc中取消設置委託。我也無法弄清楚你的筆尖加載應該做什麼。 – 2010-11-24 01:07:38

回答

1

由於TC的答案(以上註釋)。

需要什麼是我釋放MKMapView在自定義UITableViewCell dealloc方法。

1

嘗試設置的區域?地圖/你想要的地圖的範圍,然後更改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;