2015-09-17 3 views
2

Навигация начинается, все методы делегата установлены и все работает по назначению.Как сбросить делегат навигации после переключения между ViewControllers

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

Я, конечно, попытался установить их снова

[SKRoutingService sharedInstance].navigationDelegate = self; 

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

[SKRoutingService sharedInstance].navigationDelegate = nil; 
[SKRoutingService sharedInstance].navigationDelegate = self; 

Но это не работает.

Так что мои вопросы:

Могу ли я даже установить навигационный делегата, после начала навигации?

Что может быть основной причиной делегирования делегата ViewController?

P.S. Я попытался не устанавливать делегатов в другой контроллер представления, когда я переключаюсь между ними (хотя у меня есть карта и на другой, но не получается). Как только я сменил контроллер NavigationView, перейдя на другой, методы navigationDelegate перестанут отвечать на запросы.

+1

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

+0

, можете ли вы воспроизвести эту проблему в демонстрационном проекте и приложить измененную версию к этому вопросу? Перед тем, как мы сможем понять ваш поток, необходимы дополнительные данные. – Ando

ответ

2

ОК, видимо, это не имело никакого отношения к делегатам, но тот факт, что я не знал, что мне нужно снова начать навигацию, как только я вернусь на экран, на котором была включена навигационная система.

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

Но в конце концов, начала навигации снова решается вопрос

SKNavigationSettings* navSettings = [SKNavigationSettings navigationSettings]; 

    navSettings.navigationType=SKNavigationTypeSimulation; 
    //navSettings.navigationType = SKNavigationTypeReal; 

    navSettings.distanceFormat=SKDistanceFormatMilesFeet; 
    navSettings.zoomLevelConfigurations = nil; 
    [SKRoutingService sharedInstance].mapView.settings.displayMode = SKMapDisplayMode3D; 

    [[SKRoutingService sharedInstance]startNavigationWithSettings:navSettings]; 
Смежные вопросы