2010-01-12 2 views
1

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

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

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

I Я не знаю, как поступить:

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

ответ

1

Включение прокрутки в один-другой может быть сложным. MKMapView не является истинным списком прокрутки (т. Е. Он не выходит из UIScrollView), но я не уверен, что это вам поможет. Я бы предложил удалить MKMapView из TableView, так как синтаксический анализ между ним и TableView станет критичным.

+0

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

+2

Если вы не используете прокрутку в таблице, то почему вы используете таблицу вообще? Почему не только два отдельных вида, таблица и карта? –

+0

Хорошая точка ... Спасибо Бен. – mvexel

0

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

+1

Я хочу, чтобы вид карты отображался внутри таблицы, потому что местоположение является ключевым свойством объекта, который я хочу визуализировать. Спасибо за подсказку userInteractionEnabled - я пытался использовать scrollEnabled, который я не уверен, работает. – mvexel

0

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

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

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

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

mapView:regionDidChangeAnimated: 

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

+0

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

+0

Я не помню, как я в конечном итоге решил это решить, боюсь. Вы уверены, что не перевыпускаете? – mvexel

0

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

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

Также убедитесь, что вы отключили прокрутку таблицыView, или это путаница, которую нужно прокрутить.

Смежные вопросы