Back 和 Navigate 函数
更改显示的屏幕。
概览
大多数应用都包含多个屏幕。 Back 和 Navigate 函数可用于更改所显示的屏幕。 例如,如果您希望用户在选中某个按钮后显示其他屏幕,请将该按钮的 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(向左)返回。 Fade 和 None 是它们自己的逆函数。 将可选参数传递给 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 过渡显示上一个屏幕,不考虑当前屏幕显示所使用的过渡。 |
分步操作
创建空白应用。
向其添加第二个屏幕。
应用包含两个空白屏幕:Screen1 和 Screen2。
将 Screen2 的 Fill 属性设置为值
Gray
。在 Screen2 上,添加一个按钮,并将其 OnSelect 属性设置为此公式:
Navigate( Screen1, ScreenTransition.Cover )
按住 Alt 键,并选择此按钮。
Screen1 通过覆盖左侧的过渡以白色背景显示。
在 Screen1 上,添加一个按钮,并将其 OnSelect 属性设置为此公式:
Back()
按住 Alt 键,并选择此按钮。
第二个屏幕通过向右呈现(Cover 的反向过渡)以灰色背景显示。
反复选择每个屏幕上的按钮来回尝试。