Панель вкладок пользовательского интерфейса mapView Обновление после обновления основных данных - PullRequest
0 голосов
/ 17 октября 2011

У меня есть приложение с 3 представлениями. Я использую контроллер панели вкладок для выбора представлений.

В настоящее время у меня установлена ​​карта для увеличения до ближайшего местоположения, включающего все аннотации. Однако, когда я обновляю данные ядра в представлении 1, а затем выбираю вкладку 2, но вывод аннотации остается прежним. Даже если я выйду из приложения, цвет булавки становится прежним (цвет меняется в зависимости от состояния данных). Единственный способ обновить его - это увеличить масштаб, а затем обратно.

код, который я пробовал:

[mapView release];

и

[mapView setNeedsDisplay];

и

[mapView removeAnnotation:tempAnnotation];

[mapView addAnnotation:tempAnnotation];

и

CLLocationCoordinate2D center = [mapView centerCoordinate];

[mapView setCenterCoordinate:center];

Я даже установил набор карт flyTo для координат 2 раза, один раз увеличил масштаб, затем снова на «нормальном» уровне масштабирования.

Есть ли способ обновить представление на didFinishLoading и т. Д.?

Могу ли я разместить один из этих фрагментов кода в неправильном месте?

Я также освобождаю переданные данные и т.д.

это просто, что панель вкладок кэширует страницу? Есть ли способ принудительного обновления карты?

Спасибо! (Я отчасти новичок, поэтому, если вы можете помочь, пожалуйста, будьте ясны в отношении шагов, которые помогут мне понять)

Роберт

1 Ответ

0 голосов
/ 18 октября 2011

Я тоже собираюсь ответить на свой вопрос:

Я видел сообщения о том, как сбросить представление, перерисовать слой и т. Д. Я довольно (не новичок) неопытен с языком, поэтомучто я сделал, это взломать, но это работает.Я надеюсь, что вы используете это, если вам нужно, но найдите лучшее решение.

View Controller:

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    mapView.region = MKCoordinateRegionMakeWithDistance([mapView centerCoordinate],2587600.0, 2587600.0);

}

- (void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    mapView.region = MKCoordinateRegionMakeWithDistance([mapView centerCoordinate],5.0, 5.0);
}

Так что, когда представление уходит, хорошо ... представление, тогда карта увеличиваетсядействительно далеко. Когда представление возвращается к просмотру, данные перезагружаются и вуаля.Ваш пробег может варьироваться, но этот метод отлично работает для того, что мне нужно сделать.

И это вовсе не дребезжащий эффект.Это бесшовные.С точки зрения пользовательского интерфейса, ничего не меняется.

ура!Роберт

...