适用于: 画布应用
更改显示的屏幕。
概览
大多数应用都包含多个屏幕。 Back使用 and Navigate 函数更改显示哪个屏幕。 例如,如果要在用户选择该按钮时显示其他屏幕,请将按钮的 OnSelect 属性设置为包含 Navigate 函数的公式。 在这个公式中,您可以指定视觉变换效果(比如 Fade)来控制屏幕切换方式。
Back 并 Navigate 仅更改显示哪个屏幕。 当前未显示的屏幕仍然在后台运行。 您可以构建公式来引用其他屏幕上控件的属性。 例如,用户可以更改某一个屏幕上滑块的值,导航到在公式中使用这个值的另一个屏幕,确定对新屏幕的显示有何影响。 然后,用户可以导航回原来的屏幕,并且确认滑块保留了自己的值。
当用户在屏幕之间导航时,上下文变量 也会保留。 可用于 Navigate 为公式显示的屏幕设置一个或多个上下文变量,这是从屏幕外部设置上下文变量的唯一方法。 这个方法可用于将参数传递到屏幕。 如果您使用过另一款编程工具,就会发现这个方法与将参数传递给过程非常相似。
使用 App 对象的 StartScreen 属性来控制要显示的第一个屏幕。
这两个函数都只能在行为公式中使用。
Navigate
在第一个参数中,指定要显示的屏幕的名称。
在第二个参数中,指定旧屏幕切换为新屏幕的方式:
| 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 过渡显示上一个屏幕,不考虑当前屏幕显示所使用的过渡。 |
分步操作
创建空白应用。
向其添加第二个屏幕。
应用包含两个空白屏幕:Screen1 和 Screen2。
将 Screen2 的 Fill 属性设置为值
Gray。在 Screen2 上,添加一个按钮,并将其 OnSelect 属性设置为此公式:
Navigate( Screen1, ScreenTransition.Cover )按住 Alt 键,并选择此按钮。
Screen1 通过覆盖左侧的过渡以白色背景显示。
在 Screen1 上,添加一个按钮,并将其 OnSelect 属性设置为此公式:
Back()按住 Alt 键,并选择此按钮。
第二个屏幕通过向右呈现(Cover 的反向过渡)以灰色背景显示。
反复选择每个屏幕上的按钮来回尝试。