• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 在 ViewController 之间切换后,如何重置导航委托(delegate)

[复制链接]
菜鸟教程小白 发表于 2022-12-12 16:17:25 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

导航开始,所有委托(delegate)方法都已设置,一切都按预期工作。

但是,如果用户切换到另一个 ViewController,而导航仍处于打开状态,并返回到导航 View Controller ,则导航委托(delegate)会发生一些事情,并且所有导航委托(delegate)方法都没有响应。

我当然尝试再次设置它们

[SKRoutingService sharedInstance].navigationDelegate = self;

甚至尝试先将它们设置为 nil,然后再将它们设置为 self

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

但它不起作用。

所以我的问题是:

导航开始后,我什至可以设置导航委托(delegate)吗?

ViewController“丢失”委托(delegate)的一般原因是什么?

附:当我在它们之间切换时,我尝试不将委托(delegate)设置到另一个 View Controller (即使我在另一个 View Controller 上也有 map ,但没有成功)。一旦我通过切换到另一个 Controller 来更改我的 NavigationView Controller ,navigationDelegate 方法就会变得无响应。



Best Answer-推荐答案


好吧,显然这与委托(delegate)无关,但事实上我不知道我必须再次开始导航,一旦我返回到导航所在的屏幕。

当我转移到第二个屏幕时,我有另一个 map ,我可以看到用户光标正在移动,所以我假设导航仍然打开,因为 map 是单例的。

但最终,重新开始导航并解决了问题

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];

关于ios - 在 ViewController 之间切换后,如何重置导航委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32639076/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap