CN108984245B - 一种基于单一视图控制器的页面切换方法及系统 - Google Patents
一种基于单一视图控制器的页面切换方法及系统 Download PDFInfo
- Publication number
- CN108984245B CN108984245B CN201810635637.6A CN201810635637A CN108984245B CN 108984245 B CN108984245 B CN 108984245B CN 201810635637 A CN201810635637 A CN 201810635637A CN 108984245 B CN108984245 B CN 108984245B
- Authority
- CN
- China
- Prior art keywords
- view
- controller
- switching
- stack
- control class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Abstract
本发明实施例提供一种基于单一视图控制器的页面切换方法及系统,包括:将多个子视图保存于视图控制器中;构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;通过所述视图控制类,对所述导航栈中的视图进行切换。本发明提供的方法,可以在一个视图控制器下进行多个子视图的切换,并且具备视图层级效果,避免了因为多个视图控制器进行切换而导致内存消耗过大的问题,降低了iOS系统在需要进行多个视图切换时的内存消耗。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种基于单一视图控制器的页面切换方法及系统。
背景技术
在iOS系统中,切换视图通常是通过导航控制器来控制视图的切换和跳转,导航控制器是一种容器视图控制器,它定义了一种基于堆栈的导航分层内容方案。导航控制器是在导航界面中管理一个或多个子视图控制器,在这种类型的接口中,每次只能看到一个子视图控制器,在使用过程中,导航控制器首选在导航栈中选择一个视图控制器,通过动画在屏幕上推出这个选中的视图控制器,同时隐藏先前的视图控制器,其中,视图控制器即ViewController,是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图。iOS的SDK中提供很多原生ViewController,以支持标准的用户界面,例如表视图视图控制器(UITableViewController)、导航视图控制器(UINavigationController)、标签栏视图控制器(UITabbarController)和iPad专有的UISplitViewController等。
使用导航界面模拟应用程序管理的分层数据组织,在层次结构的每个级别,提供一个适当的屏幕以显示该级别的内容,如图1示出了在IOS模拟器中设置应用程序提供的导航界面示例,第一个屏幕向用户显示包含偏好的应用程序列表,选择应用程序会显示该应用程序的单独设置和设置组,选择一个组UI产生更多的设置等等,其中,出了根视图外,导航控制器提供了一个后退按钮,运行用户返回上一层级跳转到一个新视图时,类似压栈,回到上个视图类似出栈,通过先进后出的原则控制视图控制器的切换次序。
在现有的切换视图过程中,导航控制器需要控制多个视图控制器,每一个视图控制器代表一个手机中的界面,如果要实现界面的切换,就需要创建多个视图控制器来切换显示,每个视图控制器在程序中都是一个对象,每次切换都需要生产初始化一个对象,如果多个视图控制器包含一些消耗性能的对象,例如地图,那么这种场景会导致内存消耗的持续增长。
发明内容
本发明实施例提供一种基于单一视图控制器的页面切换方法及系统,用以解决现有技术中导航控制器需要控制多个视图控制器,每一个视图控制器代表一个手机中的界面,如果要实现界面的切换,就需要创建多个视图控制器来切换显示,每个视图控制器在程序中都是一个对象,每次切换都需要生产初始化一个对象,如果多个视图控制器包含一些消耗性能的对象,例如地图,那么这种场景会导致内存消耗的持续增长的问题。
本发明实施例提供一种基于单一视图控制器的页面切换方法,包括:
将多个子视图保存于视图控制器中;
构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;
通过所述视图控制类,对所述导航栈中的视图进行切换。
其中,所述通过所述视图控制类,对所述导航栈中的视图进行切换具体包括:在上述视视图控制器中,将目标视图进行压栈操作,并将所述导航栈中的当前视图进行出栈操作。
其中,所述将多个子视图保存于视图控制器中的步骤之前,还包括:创建所述导航栈的根视图,并将所述根视图保存在所述导航栈中。
其中,所述构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示的步骤还包括:若所述导航栈中没有视图,则将所述根视图作为当前视图进行显示。
其中,多个所述子视图的大小相同。
其中,所述将目标视图进行压栈操作,并将所述导航栈中的当前视图进行出栈操作的步骤中,所述导航栈通过视图动画实现所述当前视图与所述目标视图的切换。
根据本发明的第二方面,提供一种基于单一视图控制器的页面切换系统,包括:
子视图保存模块,用于将多个子视图保存于视图控制器中;
显示模块,用于构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;
切换模块,用于通过所述视图控制类,对所述导航栈中的视图进行切换。
根据本发明的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述基于单一视图控制器的页面切换方法的步骤。
根据本发明的第四方面,提供一种基于单一视图控制器的页面切换设备,包括:
至少一个处理器;以及与所述处理器连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述基于单一视图控制器的页面切换方的步骤。
本发明提供的方法,可以在一个视图控制器下进行多个子视图的切换,并且具备视图层级效果,避免了因为多个视图控制器进行切换而导致内存消耗过大的问题,降低了iOS系统在需要进行多个视图切换时的内存消耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为iOS模拟器中设置应用程序提供的导航界面示意图;
图2为本发明实施例提供的一种基于单一视图控制器的页面切换方法的流程示意图;
图3为本发明实施例提供的一种基于单一视图控制器的页面切换系统的结构示意图;
图4为本发明实施例提供的一种基于单一视图控制器的页面切换设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图2,图2为本发明实施例提供的一种基于单一视图控制器的页面切换方法的流程示意图,所提供的方法包括:
S1,将多个子视图保存于视图控制器中;
S2,构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;
S3,通过所述视图控制类,对所述导航栈中的视图进行切换。
具体的,首先在一个视图控制器中,将多个子视图添加到视图控制器ViewController的View中,用以实现一个导航控制器进行多个视图切换的效果。
在储存了视图后,定义一个StackViewNagation类来处理子视图的切换和保存当前所有在导航栈中的视图。
通过添加和视图控制器中的视图相同尺寸的子视图的方式,实现类似界面切换的效果,每个子视图的显示元素都添加至当前显示的视图中。每一次视图控制类通过压栈一个目标视图到导航栈,同时从导航栈中移除当前正在显示的视图,在用户交互层面,用户感知到切换了多个视图,程序内部的视图控制器并没有更换。
通过此方法,可以在一个视图控制器下进行多个子视图的切换,并且具备视图层级效果,避免了因为多个视图控制器进行切换而导致内存消耗过大的问题,降低了iOS系统在需要进行多个视图切换时的内存消耗。
在上述实施例的基础上,所述通过所述视图控制类,对所述导航栈中的视图进行切换具体包括:在上述视视图控制器中,将目标视图进行压栈操作,并将所述导航栈中的当前视图进行出栈操作。
所述将多个子视图保存于视图控制器中的步骤之前,还包括:创建所述导航栈的根视图,并将所述根视图保存在所述导航栈中。
所述构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示的步骤还包括:若所述导航栈中没有视图,则将所述视图作为当前视图进行显示。
具体的,在对视图进行切换的时候,通过出栈和入栈的方式,首先将目标视图进行压栈操作,同时将导航栈中当前显示的视图进行出栈操作,以实现视图的切换。
在整个步骤之前,还包括创建根视图动作,首选创建导航栈的根视图,并将根视图保存在导航栈中,当导航栈中没有没有子视图在进行显示时,则将根视图作为当前视图进行显示。
在上述实施例的基础上,多个所述子视图的大小相同。
具体的,在视图切换中,每个切换的子视图的尺寸时相同的,使得每一张视图都可以适合于视图控制器的使用。
在上述实施例的基础上,所述将目标视图进行压栈操作,并将所述导航栈中的当前视图进行出栈操作的步骤中,所述导航栈通过视图动画实现所述当前视图与所述目标视图的切换。
具体的,在进行子视图之间的切换的时候,通过动画效果来实现整体操作,使得用户感知到视图的切换。
图3为本发明实施例提供的基于单一视图控制器的页面切换系统的结构示意图,所提供的结构包括:子视图保存模块31、显示模块31和切换模块33。
其中,子视图保存模块,用于将多个子视图保存于视图控制器中;
显示模块32用于构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;
切换模块33用于通过所述视图控制类,对所述导航栈中的视图进行切换。
具体的,首先在一个视图控制器中,将多个子视图添加到视图控制器ViewController的View中,用以实现一个导航控制器进行多个视图切换的效果。
在储存了视图后,定义一个StackViewNagation类来处理子视图的切换和保存当前所有在导航栈中的视图。
通过添加和视图控制器中的视图相同尺寸的子视图的方式,实现类似界面切换的效果,每个子视图的显示元素都添加至当前显示的视图中。每一次视图控制类通过压栈一个目标视图到导航栈,同时从导航栈中移除当前正在显示的视图,在用户交互层面,用户感知到切换了多个视图,程序内部的视图控制器并没有更换。
通过此系统,可以在一个视图控制器下进行多个子视图的切换,并且具备视图层级效果,避免了因为多个视图控制器进行切换而导致内存消耗过大的问题,降低了iOS系统在需要进行多个视图切换时的内存消耗。
图4示例了基于单一视图控制器的页面切换设备设备的结构示意图,如图4所示,该服务器可以包括:处理器(processor)410、存储器(memory)430和总线440,其中,处理器410,存储器430通过总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行如下方法:将多个子视图保存于视图控制器中;构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;通过所述视图控制类,对所述导航栈中的视图进行切换。
本实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:将多个子视图保存于视图控制器中;构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;通过所述视图控制类,对所述导航栈中的视图进行切换。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:将多个子视图保存于视图控制器中;构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;通过所述视图控制类,对所述导航栈中的视图进行切换。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于单一视图控制器的页面切换方法,其特征在于,包括:
将多个子视图保存于视图控制器中;
构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;
通过所述视图控制类,对所述导航栈中的视图进行切换;
所述通过所述视图控制类,对所述导航栈中的视图进行切换具体包括:
在所述视图控制器中,将目标视图进行压栈操作,并将所述导航栈中的当前视图进行出栈操作。
2.根据权利要求1所述的方法,其特征在于,所述将多个子视图保存于视图控制器中的步骤之前,还包括:
创建所述导航栈的根视图,并将所述根视图保存在所述导航栈中。
3.根据权利要求2所述的方法,其特征在于,所述构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示的步骤还包括:若所述导航栈中没有视图,则将所述根视图作为当前视图进行显示。
4.根据权利要求1所述的方法,其特征在于,多个所述子视图的大小相同。
5.根据权利要求1所述的方法,其特征在于,所述将目标视图进行压栈操作,并将所述导航栈中的当前视图进行出栈操作的步骤中,所述导航栈通过视图动画实现所述当前视图与所述目标视图的切换。
6.一种基于单一视图控制器的页面切换系统,其特征在于,包括:
子视图保存模块,用于将多个子视图保存于视图控制器中;
显示模块,用于构建视图控制类,调用所述视图控制器中保存的视图到视图控制类的导航栈中进行显示;
切换模块,用于通过所述视图控制类,对所述导航栈中的视图进行切换;
所述切换模块在执行所述通过所述视图控制类,对所述导航栈中的视图进行切换的步骤时,具体用于:
在所述视图控制器中,将目标视图进行压栈操作,并将所述导航栈中的当前视图进行出栈操作。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1到5中任一所述的方法的步骤。
8.一种基于单一视图控制器的页面切换设备,其特征在于,包括:
至少一个处理器;以及与所述处理器连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810635637.6A CN108984245B (zh) | 2018-06-20 | 2018-06-20 | 一种基于单一视图控制器的页面切换方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810635637.6A CN108984245B (zh) | 2018-06-20 | 2018-06-20 | 一种基于单一视图控制器的页面切换方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984245A CN108984245A (zh) | 2018-12-11 |
CN108984245B true CN108984245B (zh) | 2021-08-31 |
Family
ID=64541462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810635637.6A Active CN108984245B (zh) | 2018-06-20 | 2018-06-20 | 一种基于单一视图控制器的页面切换方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108984245B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766246B (zh) * | 2019-02-02 | 2023-04-07 | 北京字节跳动网络技术有限公司 | 用于监控应用的方法和装置 |
CN111694624B (zh) * | 2019-03-13 | 2021-12-10 | 北京字节跳动网络技术有限公司 | 回退显示处理方法、装置、设备及介质 |
CN110780831B (zh) * | 2019-09-24 | 2023-09-22 | 浙江坤盈科技有限公司 | 视图切换方法、装置、计算机设备和存储介质 |
CN111901370A (zh) * | 2020-05-29 | 2020-11-06 | 大数金科网络技术有限公司 | 基于协议自定义iOS导航栏样式的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970526A (zh) * | 2013-11-21 | 2014-08-06 | 成都力淼科技有限公司 | 一种基于Android单Activity的视图切换技术 |
CN104216773A (zh) * | 2013-06-05 | 2014-12-17 | 腾讯科技(深圳)有限公司 | 视图切换方法和装置 |
CN105138263A (zh) * | 2015-08-17 | 2015-12-09 | 百度在线网络技术(北京)有限公司 | 一种在应用内跳转至特定页面的方法与装置 |
CN107463367A (zh) * | 2017-06-22 | 2017-12-12 | 北京小度信息科技有限公司 | 转场动画实现方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188002A1 (en) * | 2002-03-29 | 2003-10-02 | Alan Deikman | Network controller with VLAN device drivers for interfacing with VLANS |
CN102906596B (zh) * | 2010-05-24 | 2015-09-16 | 皇家飞利浦电子股份有限公司 | 包括多层荧光带闪烁体并具有能切换的光谱灵敏度的ct探测器 |
US10114349B2 (en) * | 2012-04-16 | 2018-10-30 | Rockwell Automation Technologies, Inc. | Multiple applications utilized in an industrial automation system displayed as a single application |
KR20130142301A (ko) * | 2012-06-19 | 2013-12-30 | 삼성전자주식회사 | 단말기의 메뉴환경 설정 장치 및 방법 |
US9671923B2 (en) * | 2014-06-27 | 2017-06-06 | Sap Se | Multi-view model for mobile applications based on double stacks |
CN104598233A (zh) * | 2015-01-12 | 2015-05-06 | 北京中交兴路车联网科技有限公司 | 一种代码生成方法 |
-
2018
- 2018-06-20 CN CN201810635637.6A patent/CN108984245B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216773A (zh) * | 2013-06-05 | 2014-12-17 | 腾讯科技(深圳)有限公司 | 视图切换方法和装置 |
CN103970526A (zh) * | 2013-11-21 | 2014-08-06 | 成都力淼科技有限公司 | 一种基于Android单Activity的视图切换技术 |
CN105138263A (zh) * | 2015-08-17 | 2015-12-09 | 百度在线网络技术(北京)有限公司 | 一种在应用内跳转至特定页面的方法与装置 |
CN107463367A (zh) * | 2017-06-22 | 2017-12-12 | 北京小度信息科技有限公司 | 转场动画实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108984245A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984245B (zh) | 一种基于单一视图控制器的页面切换方法及系统 | |
US8881170B2 (en) | Method for simulating screen sharing for multiple applications running concurrently on a mobile platform | |
WO2016078380A1 (zh) | 显示方法、终端及计算机存储介质 | |
CN107168780B (zh) | 虚拟现实场景的加载方法、设备及虚拟现实设备 | |
KR20160110503A (ko) | 이동 단말 및 로딩 내용의 처리 방법 | |
CN109842818A (zh) | 一种视频播放方法、装置、计算机设备及存储介质 | |
CN103970414A (zh) | 一种管理应用程序图标的方法及终端 | |
CN104142784A (zh) | 输入内容的临时存储方法和装置 | |
CN113722124B (zh) | 一种云手机的内容处理方法、装置、设备及存储介质 | |
WO2017201965A1 (zh) | 通知消息的显示方法及装置、终端 | |
CN104615418A (zh) | 一种可滑动播放窗口的实现方法和装置 | |
CN106990962B (zh) | 动态锁屏壁纸切换方法、装置及终端 | |
CN110703974B (zh) | 消息交互方法、装置及存储介质 | |
CN106708478B (zh) | 滚动视图显示方法及装置 | |
CN113590072A (zh) | 一种分屏显示方法及其设备 | |
CN107908380B (zh) | 基于组态的多屏显示方法、装置、终端设备及存储介质 | |
CN103941976A (zh) | 一种信息处理方法及电子设备 | |
CN104461219A (zh) | 信息处理设备及信息处理方法 | |
CN104519185A (zh) | 一种信息处理方法和电子设备 | |
CN113552988A (zh) | 界面焦点控制方法、装置、电子设备和存储介质 | |
CN104915168A (zh) | 一种信息处理方法及电子设备 | |
CN109257806B (zh) | 通信终端的载波聚合模式设定方法及通信终端和介质 | |
CN107908462B (zh) | 控制应用运行的方法和移动终端设备和相关介质产品 | |
CN103164109A (zh) | 在移动终端动态显示文件的方法及系统 | |
CN109905759B (zh) | 一种应用于Android客户端的列表展示方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |