Back 和 Navigate 函数

更改显示的屏幕。

概览

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

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

当用户在屏幕之间导航时,上下文变量 也会保留。 您可以使用 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(向左)返回。 FadeNone 是它们自己的逆函数。 将可选参数传递给 Back 可以强制执行特定的过渡。

Back 通常会返回 true ,但如果用户在启动应用程序后未导航到其他屏幕,则返回 false

语法

返回([ 过渡 ])

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

导航( Screen [, Transition [, UpdateContextRecord ] ] ])

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

示例

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

分步操作

  1. 创建空白应用。

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

    应用包含两个空白屏幕:Screen1Screen2

  3. Screen2Fill 属性设置为值 Gray

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

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

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

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

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

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

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

另请参见

使用上下文变量