Как остановить обновления местоположения из другого класса / представления? - PullRequest
0 голосов
/ 06 марта 2012

В настоящее время я создаю приложение, которое позволяет пользователю отслеживать различные «поездки», которые они совершают.

Приложение состоит из двух представлений.Первый вид состоит из 2 кнопок, которые позволяют пользователю запускать и останавливать текущее «отключение».

При нажатии кнопки «Пуск» происходит переход во второе представление, которое по существу отображает текущее отключение на карте.

У меня проблема с остановкой поездки.Когда пользователь желает остановить поездку, он должен просто нажать кнопку остановки в первом представлении.Затем я хотел бы остановить обновления местоположения, поскольку они больше не нужны.

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

Что я пробовал: я настроил NSNotification, чтобы сообщить второму представлению, чтобы остановить обновления местоположения.Проблема в том, что это вызывается только при повторной загрузке второго представления.Это бесполезно, так как после остановки поездки второе представление никогда не будет загружено (пока не будет запущено другое путешествие).

Заранее благодарен за любую помощь.

Ответы [ 3 ]

1 голос
/ 06 марта 2012

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

Однако, может быть, вы хотите пересмотреть возможность удаления контроллера представления вместе? Если он вообще не используется, то зачем вообще хранить его в памяти? Вы могли бы просто выпустить это.

0 голосов
/ 15 марта 2012

Я думаю, что хорошим вариантом будет:

  • создать протокол во втором представлении с методом остановки обновлений местоположения и создать делегат свойства для этого протокола.

- реализовать протокол в первом контроллере представления.

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

Это должно работать нормально

0 голосов
/ 06 марта 2012

Использование NSNotification - это правильный способ уведомлять компоненты вашего приложения о событиях.Вы должны посмотреть, почему это не работает.В качестве альтернативы вы можете иметь указатель на оба представления в делегате приложения и вызывать его из любого места, вызывая [UIApplication sharedApplication].delegate;

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