2017-01-30 2 views
0

У меня возникла странная проблема с UITableViewController. Я запрашиваю authroization службы определения местоположения внутри метода viewDidLoad, и я мог видеть, что появляется предупреждение. Тем не менее, это оповещение остается на пару секунд, а затем исчезает. Почему это происходит?Как сохранить окно с запросом на оповещение о местоположении.

override func viewDidLoad() { 
    let locationManager = CLLocationManager() 
    locationManager.requestAlwaysAuthorization() 
} 

Я попробовал этот код в UIViewController, который загружает этот UITableViewController и столкнулся с другой проблемой. На этот раз отображается только предупреждение с уведомлением службы уведомлений только для уведомлений, а запрос службы поиска полностью игнорируется. Я предполагаю, что это потому, что запрос службы уведомлений не от меня, а от ios, и мой запрос службы местоположения был перезаписан запросом уведомления ios. Это мое предположение правильно или есть какое-либо объяснение для такого поведения?

ответ

1

Ваш менеджер местоположений выходит из строя, потому что это локальная переменная. Сделать это постоянное свойство:

let locationManager = CLLocationManager() 
override func viewDidLoad() { 
    // ... 
} 

Кроме того, я не уверен, является ли это хорошая идея, чтобы сделать это в viewDidLoad. Вид еще не находится в интерфейсе; на самом деле, может быть нет интерфейс еще.

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

+0

Хорошая точка! Перед запросом следует проверить статус авторизации. Но где этот код принадлежит? – user30646

+0

Лично мне нравится проверять статус непосредственно перед тем, как я действительно начну использовать службы определения местоположения. Но если вы собираетесь это сделать, когда сначала появится представление контроллера представления, вы, очевидно, можете использовать 'viewDidAppear'. – matt

+0

Я просил разрешения перед использованием службы. Тогда я подумал, может быть, я должен попросить разрешения для всех служб, которые мне нужны, и избавиться от них. – user30646

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