#3 iOS —重塑视图控制器导航

注意:此屏幕快照中定义的域将无法使用,因为它不会返回 与您的团队ID相匹配的 正确的 apple-app-site-association 文件。 您必须配置自己的域,并确保 apple-app-site-association 文件在网络上可用。

用例

  • 应用程序具有一个可以接收UIColor视图控制器ColorViewController ,并且具有颜色选择器,该颜色选择器触发导航到相同的视图控制器类型,并将所选颜色作为数据传递给新实例。
  • 应用程序可以打开一个深链接URL,该URL的路径中包含十六进制字符串。
  • 应用程序应将十六进制字符串映射到UIColor并将其传递给ColorViewController
  • 应用程序应使用以下URL格式打开ColorViewController ,并在背景中显示适当的颜色:
  https:// DOMAIN / color / COLOR_HEX_STRING 
http:// DOMAIN / colour / COLOR_HEX_STRING
https:// DOMAIN / color / COLOR_HEX_STRING
http:// DOMAIN / colour / COLOR_HEX_STRING

目的地

它不过是一个简单的视图控制器包装器,它提供了一些附加功能并简化了截断数据(从URL提取的数据)的填充。

Destination的resolve方法是将URL中的参数映射到目的地视图控制器可以接收的数据的地方。 此类目的地需要与URL模式字符串一起注册。 这些用于CoreNavigation的路由匹配机制。

应用委托

注意AppDelegate类中的registerRoutes()方法。 它说任何与传递的数组中的任何字符串匹配的URL都应解析为Color目标类型。

:冒号)字符开头的所有参数占位符将替换为从URL提取的数据,并传递给Colorresolove(context:)方法。

定义参数占位符的格式:

  :PARAMETER_NAME 

要么

  :PARAMETER_NAME(REGEX_MATCH_PATTERN) 

访问提取的参数:

 让parameter = context.parameters?[“ PARAMETER_NAME”]表示为? 串 

在此示例中,路由模式是硬编码的。 但是,它们可以在服务器端生成并提供给应用程序,因此它将始终与网站及其URL保持同步。

NSUserActivity导航扩展

CoreNavigation支持导航到URL类型,因此只需导航到它即可。

编码愉快!

aronbalog / CoreNavigation
CoreNavigation –📱📲轻松在视图控制器之间导航。 💫github.com