MKMapView в UITableView и редактирование - PullRequest
1 голос
/ 12 января 2010

У меня есть UITableView с двумя разделами, которые нужно редактировать. Первый раздел представляет собой несколько ячеек с текстовым, числовым и датным содержимым, которые предоставлены отдельным контроллером представления для редактирования значений.

Нижняя часть - это одна ячейка, в которой отображается настраиваемая ячейка с MKMapView. Эта ячейка используется для визуализации местоположения для этой конкретной записи информации. Я хотел бы, чтобы эта ячейка была редактируемой «на месте»:

  • MKMapView становится прокручиваемым
  • Центром карты (обозначенной перекрестием) является (новое) местоположение

Я не уверен, как поступить:

  • Где установить изменение состояния, когда ячейка становится редактируемой (от фиксированной к прокручиваемой)
  • Как обновить базовый объект, если задано новое местоположение?

Ответы [ 4 ]

1 голос
/ 12 января 2010

Поместить виды прокрутки друг в друга может быть сложно. MKMapView не является настоящим scrollview (то есть он не происходит от UIScrollView), но я не уверен, что это поможет вам. Я бы предложил удалить MKMapView из TableView, так как касание парсинга между ним и TableView станет рискованным.

0 голосов
/ 05 марта 2010

У меня была такая же проблема: встроить MKMapView в пользовательский UITableViewCell.

После одного дня насмешек мне посчастливилось найти решение. В моем случае решение оказывается очень простым. Проблема связана с высотой ячейки, определенной в моем пользовательском tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath слишком коротка для MKMapView. Вы не узнаете по его внешнему виду. На самом деле вы можете определить представление пользовательской ячейки таблицы намного выше, чем определено в heightForRowAtIndexPath. И угадайте, что, внешний вид будет определяться высотой представления ячейки пользовательского представления таблицы. Но это не будет работать правильно. Область, выходящая за пределы, определенная в heightForRowAtIndexPath, не реагирует на какие-либо взаимодействия с пользователем. Вот почему мой MKMapView не масштабируется и не перемещается, когда он встроен в ячейку табличного представления. Это ошибка компилятора, которую, я надеюсь, Apple исправит.

Также убедитесь, что вы отключили прокрутку tableView, иначе вы не поймете, какую прокрутку следует прокрутить.

0 голосов
/ 12 января 2010

Я понял половину этого. Переключение взаимодействия с пользователем в пользовательской ячейке - просто вопрос ввода

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

в подклассе UITableViewCell.

Для местоположения я попытаюсь опубликовать уведомление на

mapView:regionDidChangeAnimated:

событие. Я дам вам знать, если это сработало.

0 голосов
/ 12 января 2010

Я не совсем уверен, что вы хотите получить, но зачем вам помещать MKMapView внутри UITableViewCell?
Вы можете включить / отключить прокрутку в просмотре карты, изменив его свойство userInteractionEnabled.Когда новое местоположение установлено, вы просто обновляете видимую область mapView (используя -setCenterCoordinate: или - setRegion: методы) - так что для этого не нужно использовать метод UITableView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...