2010-11-24 11 views
1

UITableViewCellでスクロールとuserInteractionを無効にしたMKMapViewがあります。目的の効果(実際には特定の位置の地図の静的な画像)はうまくいきますが、MKMapViewが画面上をスクロール(スクロール)するとマップがリロードされ、アプリがクラッシュすることがあります。私はcellForRowAtIndexPathにカスタムUITableViewCellの他のUITableViewCellなどをロードしていますリロードから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を移動する前に、あなたは、地図画像のロードを許可すれば、この現在の方法で、それはOKだことを発見しました。しかし、ロードが完了する前に画面から移動すると、クラッシュします。 :(

私はマップを何か制御したり、注釈を表示したくないと指摘します。マップビューをスクリーンショットし、スクリーンから非表示にして、そのスクリーンショットを表示しようとしました。 UITableViewCellUIImageViewしかし、これは十分に速くはなかった

EDIT:!。。更新されたコードこれは、このメソッドの完全なコードで、ここで間違って私のカスタムTableViewCellのアロケーションです

+0

あなたが実際に達成したい結果は明らかではありません。おおまかな推測では、MKMapViewのデリゲートがセルの場合、デリゲートをセルの-deallocでアンセットする必要があります。私はまた、あなたの念頭に置いておかなければならないことを解決することができません。 –

+0

私は今これを感謝しました。あなたが知っていたかもしれないと思うかもしれません。私はここでもMapViewをリリースすべきですか? –

+0

@tc Deallocセルが動作しているようです。これを答えに入れて、緑のダニをお渡しします! –

答えて

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]; 

そして、これを試してください:答え(上記のコメント)用のTCへ

mapView.zoomEnabled = NO; 
mapView.userInteractionEnabled = NO; 
関連する問題