ST 2 NavigationView 初探

简介: 一、NavigationView 简介 NavigationView 与 Card 布局的方式有点相似,可以管理多个视图之间的显示或隐藏,但是NavigationView 同一时间只能显示一个视图。

一、NavigationView 简介

NavigationView 与 Card 布局的方式有点相似,可以管理多个视图之间的显示或隐藏,但是NavigationView 同一时间只能显示一个视图。有时候,针对没有提供“返回键”的终端系统(例如 iOS)提供一个返回键很有必要,因此,NavigationView 在工具栏上安排了一个返回键,其作用相当于执行 NavigationView 类的 pop() 方法。除返回键外,还有用于 titile 的显示的地方。

NavigationView 切换视图的方法与 Card 布局会有所不同:NavigationView 从当前的视图切换到新的视图应该执行push() 方法,返回上个视图应该执行 pop() 方法。我们可以将 NavigationView 理解成一个栈(stack,关于栈,遵循先进后出的原则:向栈中添加一个对象为入栈 push,从栈中删除一个对象叫做出栈 pop),这个栈中可以存放很多 View。在这个栈创建的时候,我们先给它添加一个 View Controller,称为 Root View,它放在栈底,代表的是刚加载程序的时候显示的视图。当用户新选择了一个想要显示的视图时,那个新的 View 入栈,它所控制的视图就会显示出来。进入一个新的视图后,左上方会出现一个按钮,叫做 Navigation Button,它就像浏览器的后退按钮一样,点击此按钮,当前的 View 出栈,之前的 View 就会显示。

// 创建一个 navigation view 并将其加入到 Ext.Viewport 中去
var view = Ext.Viewport.add({
    xtype:'navigationview',
 
    // 初次加载时起码有一面板,可以接下来的跳转。
    items: [
        {
           // 可以与有 title 配置项
      
           padding: 10,
 
           // 在第一个显示的面板中先加入一个按钮吧
           items: [
               {
                   xtype: 'button',
                   text: 'Push another view!',
                   handler: function() {
                        // 单击这个按钮,就进入到下面这个新的面板。
                        view.push({
                            //this one also hasa title
                            title: 'SecondView',
                            padding: 10,
 
                            // 如法炮制,该面板也要一个按钮
                            items: [
                                {
                                    xtype:'button',
                                    text: 'Popthis view!',
                                    handler:function() {
                                        // 当按下这个按钮,就不要这个面板了,退到上一次哪里的地方。
                                       view.pop();
                                    }
                                }
                            ]
                        });
                   }
               }
           ]
        }
    ]
});

二、两个切换视图方法:push()/pop()

NavigationView 内部的各个视图构成一视图列表,如果 stack 那样的概念,维护 NavigationView 的视图列表仍可以使用 push()/pop() 的接口。

NavigationView.push() 最简单的用法如下,就是制定标题 title 和 内容 html,构成一个对象送入 push() 方法中去,——这等于创建一个新的视图(Panel 面板)并显示。

view.push({
    title:'New views title',
    html:'Some content'
});

如果或者不是简单的 Panel,而是更复杂的其他组件呢? NavView 也是可以支持的,例如以下新建的tabPanel 多面板对象,送入的 push() 方法中。

var tabPanel = Ext.create('Ext.tab.Panel', {
    items: [
        {
           title: 'First',
           html: 'first'
        },
        {
           title: 'Second',
           html: 'second'
        }
    ]
});
 
view.push(tabPanel);

返回上一页便是 pop(),也可以送入一个 Number 参数,制定返回的页面,——大家可以试一试。

另外 getPreviousItem() 与 pop() 不太一样,getPreviousItem() 没有页面效果,只是返回上一个元素。

Sencha Touch API 中不但有 push()/pop() 方法,另外还有与之对应的事件,签名如下:pop(Ext.navigation.View this, Mixed view, Object eOpts )、push( Ext.navigation.Viewthis, Mixed view, Object eOpts ) 和 back( Ext.navigation.View this, Object eOpts)。back 事件就是返回按钮按下后执行的事件。

三、导航条 NavigationBar

既然顾名思义导航视图,必不可少便是导航条,即 NavigationBar。配置项 defaultBackButtonText 默认是“Back”,但如果你希望采用上一张视图的标题为“返回键”的文字,可以把 useTitleForBackButtonText : Boolean 设为 true 即可。导航条默认位于屏幕上方,如果你想放置在下面,定义 navigationBar 配置项如下:

navigationBar: {
    ui:'dark',
    docked:'bottom' // 反之 'top' 为顶部
}

如果把 navigationBar 设为 false 表示隐藏导航条。

四、小结

NavigationView 是 Sencha Tounch 2.0 新提供的包,十分好用,使用的时候把它想象成一个栈,用起来就会比较简单。而且切换视图会有 Ext 炫丽的呈现方式,就是切换动画(我在低端的机子上测试过,感觉效果还可以,不会太慢)。在纯web的app或者没有内置导航控制下,NavigationView 作用还是非常明显的。

目录
相关文章
|
9月前
|
存储 人工智能 算法
【AI系统】计算与调度
本文探讨了计算与调度的概念,特别是在神经网络和图像处理中的应用。通过分离算法定义和计算组织,Halide 等工具能够显著提升图像处理程序的性能,同时保持代码的简洁性和可维护性。文章详细介绍了计算与调度的基本概念、调度树的构建与约束,以及如何通过调度变换优化计算性能。此外,还讨论了自动调优方法在大规模调度空间中的应用,展示了如何通过探索和预测找到最优的调度方案。
164 0
算法:图解递归算法的应用场景和使用途径
算法:图解递归算法的应用场景和使用途径
|
SQL 数据可视化 安全
免费的可视化Web报表工具,JimuReport v1.4.4-beta版本发布
积木报表,一款免费的可视化Web报表工具,像搭建积木一样在线拖拽设计!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题,完全免费的!
679 0
|
5月前
|
算法 Java Python
使用Python来绘制樱花树
本文以林徽因的《你是人间的四月天》为引,将春日意象与现代职场编程艺术结合,通过Python的Turtle模块绘制分形树和花瓣图案。文章详细解析了Turtle模块的使用方法、递归算法及随机性在图形生成中的应用,展示了如何用代码创造自然美感。核心代码包含tree函数(绘制分形树)和petal函数(绘制花瓣),最终生成一幅生动的春日画卷。项目不仅帮助读者掌握Turtle绘图技巧,更激发对编程艺术的兴趣,鼓励探索数字世界的无限可能。
136 5
|
10月前
|
应用服务中间件 nginx
Nginx:怎么携带参数重定向
通过合理配置Nginx的 `rewrite`指令和 `return`指令,可以实现携带参数的重定向。这不仅可以确保用户请求被正确重定向,还可以保留原始查询参数,满足更多复杂的重定向需求。
304 2
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
1112 3
|
11月前
|
Java Linux Maven
用sdkman在linux上管理多个java版本
本文介绍了如何在Linux上使用SDKMAN来管理多个Java版本,包括安装SDKMAN、验证安装、列出和安装不同版本的JDK、Maven和Gradle,以及如何切换使用不同版本。
734 0
|
存储 安全 算法
深入解析Linux命令:cksum
`cksum`是Linux中用于计算文件CRC校验和及字节数的命令,有助于验证文件完整性。它的语法是`cksum [OPTION]... [FILE]...`,常用选项包括`-b`(按字节显示文件大小)、`-c`(检查校验和文件)等。通过示例展示了如何计算单个或多个文件的CRC,以及如何验证文件完整性。在系统管理和网络安全中,`cksum`可用于文件传输验证、备份检查和安全审计,确保文件未被篡改。
|
程序员 Python
Anconda安装(超详细 3(3)
Anconda安装(超详细 3(3)
Anconda安装(超详细 3(3)

热门文章

最新文章