Back 和 Navigate 函数

适用于: 画布应用

更改显示的屏幕。

概览

大多数应用都包含多个屏幕。 Back使用 and Navigate 函数更改显示哪个屏幕。 例如,如果要在用户选择该按钮时显示其他屏幕,请将按钮的 OnSelect 属性设置为包含 Navigate 函数的公式。 在这个公式中,您可以指定视觉变换效果(比如 Fade)来控制屏幕切换方式。

Back 并 Navigate 仅更改显示哪个屏幕。 当前未显示的屏幕仍然在后台运行。 您可以构建公式来引用其他屏幕上控件的属性。 例如,用户可以更改某一个屏幕上滑块的值,导航到在公式中使用这个值的另一个屏幕,确定对新屏幕的显示有何影响。 然后,用户可以导航回原来的屏幕,并且确认滑块保留了自己的值。

当用户在屏幕之间导航时,上下文变量 也会保留。 可用于 Navigate 为公式显示的屏幕设置一个或多个上下文变量,这是从屏幕外部设置上下文变量的唯一方法。 这个方法可用于将参数传递到屏幕。 如果您使用过另一款编程工具,就会发现这个方法与将参数传递给过程非常相似。

使用 App 对象的 StartScreen 属性来控制要显示的第一个屏幕。

这两个函数都只能在行为公式中使用。

在第一个参数中,指定要显示的屏幕的名称。

在第二个参数中,指定旧屏幕切换为新屏幕的方式:

Transition 参数 描述 演示
ScreenTransition.Cover 的 新屏幕将滑入视图,从右向左移动,覆盖当前屏幕。 屏幕过渡覆盖动画。
ScreenTransition.CoverRight 封面 新屏幕将滑入视图,从左向右移动,覆盖当前屏幕。 屏幕过渡向右覆盖动画。
ScreenTransition.Fade 文件 当前屏幕淡出以显示新屏幕。 屏幕过渡淡化动画。
ScreenTransition.None (默认) 新屏幕将快速替换当前屏幕。 无屏幕过渡动画。
ScreenTransition.UnCover 的 盖当屏幕将滑出视图,从右向左移动,呈现新屏幕。 屏幕过渡呈现动画。
ScreenTransition.UnCoverRight(屏幕转换.UnCoverRight) 盖当屏幕将滑出视图,从左向右移动,呈现新屏幕。 屏幕过渡向右呈现动画。

可用于 Navigate 创建或更新新屏幕的 上下文变量 。 第三个参数是可选的,它可用于传递一条记录,其中包含上下文变量名称(以列名称的形式)和上下文变量的新值。 这条记录就是用于 UpdateContext 函数的记录。

设置旧屏幕的 OnHidden 属性和/或新屏幕的 OnVisible 属性,以在过渡期间进行其他更改。 App.ActiveScreen 属性将更新以反映更改。

Navigate 通常返回 true ,但如果遇到错误,则返回 false 。

导航上下文变量在文章在屏幕之间导航中有介绍。

Back

该 Back 函数返回到最近显示的屏幕。

对于每次 Navigate 调用,应用都会跟踪显示的屏幕和切换效果。 可以使用连续 Back 调用一直返回到用户启动应用时显示的屏幕。

Back函数运行时,默认使用反向转换。 例如,如果屏幕通过 CoverRight 切换显示, Back 则使用 UnCover (即左侧)返回。 Fade 和 None 是它们自己的逆函数。 传递可选参数以 Back 强制特定转换。

Back 通常返回 true ,但如果用户自启动应用后未导航到另一个屏幕,则返回 false 。

语法

Back([ 转换 ] )

  • transition - 可选。 切换当前屏幕和上一个屏幕时要使用的视觉过渡效果。 请参阅本文前文中所述此参数的有效值列表。 默认情况下,屏幕返回所使用的过渡与屏幕出现的过渡相反。

Navigate( 屏幕 [, 转换 [, UpdateContextRecord ] ] ] )

  • screen - 必需。 要显示的屏幕。 除了屏幕,您还可以使用您希望导航到的屏幕上的控件。
  • transition - 可选。 切换屏幕时要使用的视觉过渡效果。 请参阅本文前文中所述此参数的有效值列表。 默认值为 None。
  • UpdateContextRecord - 可选。 一条记录,其中包含至少一列的名称以及每列的值。 这一条记录用于更新新屏幕的上下文变量,就像传递到 UpdateContext 函数一样。

示例

公式 描述 结果
Navigate(详细信息) 显示 Details 屏幕,没有任何过渡效果,也不会更改上下文变量的值。 Details 屏幕会快速显示。
Navigate(详细信息,ScreenTransition.Fade) 用淡入淡出过渡效果显示 Details 屏幕。 不更改上下文变量的任何值。 当前屏幕淡化消失,以显示 Details 屏幕。
Navigate(详细信息,ScreenTransition.Fade,{ ID: 12 } ) 使用淡入淡出过渡效果显示 Details 屏幕,并且将 ID 上下文变量的值更新为 12。 当前屏幕淡化消失,以显示 Details 屏幕,并且将这个屏幕的上下文变量 ID 设置为 12。
Navigate(详细信息,ScreenTransition.Fade,{ ID: 12,阴影:Color.Red } ) 用淡入淡出过渡效果显示 Details 屏幕。 将 ID 上下文变量的值更新为 12,并且将 Shade 上下文变量的值更新为 Color.Red。 当前屏幕淡化消失,以显示 Details 屏幕。 将 Details 屏幕的上下文变量 ID 设置为 12,并且将上下文变量 Shade 设置为 Color.Red。 如果将 Details 屏幕上某一控件的 Fill 属性设置为 Shade,则该控件会显示为红色。
Back() 显示带有默认返回过渡效果的上一屏幕。 通过当前屏幕显示所使用的过渡的反向过渡显示上一个屏幕。
Back(ScreenTransition.Cover) 显示带有 Cover 过渡的上一屏幕。 通过 Cover 过渡显示上一个屏幕,不考虑当前屏幕显示所使用的过渡。

分步操作

  1. 创建空白应用。

  2. 向其添加第二个屏幕。

    应用包含两个空白屏幕:Screen1 和 Screen2。

  3. 将 Screen2 的 Fill 属性设置为值 Gray。

  4. 在 Screen2 上,添加一个按钮,并将其 OnSelect 属性设置为此公式:

    Navigate( Screen1, ScreenTransition.Cover )
    
  5. 按住 Alt 键,并选择此按钮。

    Screen1 通过覆盖左侧的过渡以白色背景显示。

  6. 在 Screen1 上,添加一个按钮,并将其 OnSelect 属性设置为此公式:

    Back()
    
  7. 按住 Alt 键,并选择此按钮。

    第二个屏幕通过向右呈现(Cover 的反向过渡)以灰色背景显示。

  8. 反复选择每个屏幕上的按钮来回尝试。

另请参见

使用上下文变量