2013-09-08 2 views
1

Возможно ли предотвратить загрузку плиток MKMapView до тех пор, пока вид не будет виден? Или, скорее, отложить его?Можно ли предотвратить загрузку плиток MKMapView до тех пор, пока вид не будет виден?

У меня есть несколько сложный вид, где пользователь может переключаться между просмотром списка, представлением фотографии и видом карты с помощью Segmented Control.

Режим по умолчанию - это вид списка, поэтому для просмотра фотографий и просмотра карт их hidden свойство установлено на YES.

Но, несмотря на скрытый я вижу, что MKMapView загружается плитками каждый раз, когда я загрузить мой сложный вид :(Это приводит к весьма заметным отставанием (~ 900 мс), который я подтвердил в инструменты с использованием времени профилирование.

Я попытался подкласс MKMapView и переопределить didAddSubview, willMoveToSuperview, didMoveToSuperview, willMoveToWindow и didMoveToWindow с надеждой, используя любой из этих вызовов, чтобы поймать вид момент карты действительно становится видимым.

Я также попытался использовать методы делегата MKMapView. к сожалению, они» re также вызывается до того, как вид карты станет видимый.

Что вы предложите?

ответ

0

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

+0

Спасибо! Да, я закончил это. Я также понял, что все мои представления создаются с нуля каждый раз, когда я перемещаюсь с помощью segue. Исправлено это также. – expert