1

編集可能にする必要がある 2 つのセクションを持つ UITableView があります。最初のセクションは、値を編集するための別のビュー コントローラーが提供される、テキスト、数値、および日付のコンテンツを含むいくつかのセルです。

一番下のセクションは、MKMapView を持つカスタム セルを表示する 1 つのセルです。このセルは、この特定の情報の記録の場所を視覚化するために使用されます。このセルを「その場で」編集できるようにしたい:

  • MKMapView がスクロール可能になります
  • マップの中心 (十字線で示される) が (新しい) 場所です

続行方法がわかりません:

  • セルが編集可能になったときの状態変更 (固定からスクロール可能) を設定する場所
  • 新しい場所が設定されたときに基になるエンティティを更新するにはどうすればよいですか?
4

4 に答える 4

1

スクロール ビューを相互に配置するのは難しい場合があります。MKMapView は真のスクロールビューではありません (つまり、UIScrollView から派生したものではありません) が、それが役に立つかどうかはわかりません。MKMapView を TableView から削除することをお勧めします。これは、MKMapView と TableView の間の接触を解析すると危うくなるからです。

于 2010-01-12T14:39:09.667 に答える
0

半分分かった。カスタムセルでのユーザー操作の切り替えは、置くだけの問題です

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.mapView setUserInteractionEnabled:editing];
}

UITableViewCell サブクラスで。

場所については、

mapView:regionDidChangeAnimated:

イベント。それがうまくいったかどうかをお知らせします。

于 2010-01-12T15:18:56.430 に答える
0

私は同じ問題を抱えていました: カスタム UITableViewCell に MKMapView を埋め込みます。

ある日の午後、あざ笑っていた後、幸運にも解決策を見つけることができました。私の場合、解決策は非常に単純です。この問題は、カスタム tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath で定義されたセルの高さが MKMapView に対して短すぎるためです。見た目ではわかりません。実際には、heightForRowAtIndexPath で定義されているよりもはるかに高いカスタム テーブルビュー セルのビューを定義できます。外観は、カスタム テーブル ビュー セルのビューの高さによって決まります。しかし、それは正しく機能しません。それを超えて拡張された領域は、heightForRowAtIndexPath で定義されているため、ユーザーの操作には応答しません。これはコンパイラのバグで、Apple が修正してくれることを願っています。

また、必ずtableViewスクロールを無効にしてください。そうしないと、どちらをスクロールする必要があるのか​​ 混乱します。

于 2010-03-05T02:59:56.153 に答える
0

    何を取得したいのか完全にはわかりませんが、なぜ UITableViewCell 内に MKMapView を配置する必要があるのですか?
    userInteractionEnabled プロパティを変更することで、mapview のスクロールを有効/無効にすることができます。新しい場所が設定されたら、mapView の可視領域を更新するだけです (-setCenterCoordinate:または - setRegion: メソッドを使用) - そのために UITableView のメソッドを使用する必要はありません。

于 2010-01-12T14:32:53.917 に答える