CN109254807A - 一种ios系统中实现分页功能的方法 - Google Patents
一种ios系统中实现分页功能的方法 Download PDFInfo
- Publication number
- CN109254807A CN109254807A CN201811125002.8A CN201811125002A CN109254807A CN 109254807 A CN109254807 A CN 109254807A CN 201811125002 A CN201811125002 A CN 201811125002A CN 109254807 A CN109254807 A CN 109254807A
- Authority
- CN
- China
- Prior art keywords
- viewcontroller
- sub
- array
- page
- paging control
- 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.)
- Pending
Links
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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公开了一种ios系统中实现分页功能的方法,通过子ViewController添加到父ViewController的方式,简单有效的实现了分页控件和业务代码解耦的目的,提高控件的复用性和代码的可维护性,并且通过给子ViewController添加标识符的方法,来重用子ViewController,减少创建的数量,大幅度降低内存的消耗,提高app响应速度,提升用户体验。
Description
技术领域
本发明涉及分页方法技术领域,具体涉及一种ios系统中实现分页功能的方法。
背景技术
在当今社会,苹果手机和ios操作系统的普及已经越来越广,因此对于ios系统上app的需求也日益增加,app的内容也越发丰富,很多的app都会用到分页功能,来给不同分类的内容分页,方便用户能够按照分类对内容进行查看。但是现在市面上用到的分页控件,普遍和业务代码的耦合性相当高,无法迅速复用,在多个地方使用时,会产生大量重复代码,使得代码维护异常的困难。而且当分页的数量比较大时,占用的内存也会大增,导致用户界面滑动的卡顿,大大降低了用户体验。
发明内容
本发明的目的在于提供一种ios系统中实现分页功能的方法,该方法可以降低分页控件和业务代码的耦合度并且降低使用分页控件所占用的内存。
为了达到上述技术效果,本发明提供了一种ios系统中实现分页功能的方法,包括以下步骤:
(1)创建父ViewController,在所述父ViewController上添加分页控件,并且设置所述分页控件的属性;
(2)创建子ViewController,在所述子ViewController上实现当前页面所需要实现的业务代码;
(3)创建装有所有子ViewController的数组,把所有需要显示的页面都添加到一个数组里面,传给所述父ViewController的分页控件,用于内容的显示;
(4)创建可以复用的子ViewController的数组,把创建过的子ViewController,当不使用时,放入到该数组中,当再次创建新的子ViewController时,会先在该数组中查找相同标识符的ViewController是否存在,如果存在则直接使用,如果不存在则创建新的子ViewController。
进一步的技术方案为,所述步骤(2)中创建子ViewController时,需要给他指定一个标识符,用于在可以复用的子ViewController的数组里面查找是否有已经创建并且不再使用的ViewController。
进一步的技术方案为,所述步骤(4)还包括对所述新的子ViewController的数据进行配置,完成界面的渲染,当所述新的子ViewController不使用时,将其放入可以复用的子ViewController的数组中,等待下一次的复用。
进一步的技术方案为,所述步骤(1)中的分页控件的属性包括设置大小、标题栏的一些配置、动画效果。
下面对本发明进行进一步的解释和说明,为了降低分页控件和业务代码的耦合度,采用的是如下技术方案,第一步,新建一个父ViewController,上面添加分页控件代码,包括设置大小,标题栏的一些配置,动画效果等等。第二步,创建子ViewController,并在在该ViewController上实现当前页面所需要实现的业务代码。第三步,把当前子ViewController添加到一个数组里面。第四步,重复步骤二,三,直到所有的子ViewController都被添加到数组里面。第五步,把ViewController数组传给父ViewController的分页控件,用于显示界面。一般分页控件的实现方式是在一个ViewController中,上面写上分页控件,下面用一个滚动视图来存放分页的内容,当滚动之后,调整控件上显示的当前页面等动画效果,并且显示当前页面的内容。这种方式使得控件代码和页面内容的代码,都在一个文件中,无法分离,耦合度很高。如果需要有多个类似的分页界面,想复用这个分页控件,难度非常的大;如果重写一个新的,则会出现大量重复代码,导致代码的可维护性非常的低。使用本方法,只需要用一个父ViewController来存放控件的代码,每个页面的内容,放在一个子ViewController中,使用时,仅仅需要把所有的子ViewController添加到一个数组中,传给分页控件即可。实现页面内容的代码和控件的代码完全解耦。复用时,仅仅需要传不同的ViewController组成的数组就可以实现。
为了降低使用分页控件所需要的内存,采用的是如下技术方案,第一步,创建一个数组,用于存放已经被创建但是并没有使用的ViewController的数组。第二步,在创建子ViewController之前,首先需要给该ViewController添加一个标识符。第三步,通过这个标识符,先去遍历ViewController数组,看是否能找到标识符相当的ViewController,如果能找到则直接进行第四步,否则就创建一个新的ViewController。第四步,对该ViewController的数据进行配置,完成界面的渲染。第五步,当当前页面被滚动走了以后,把当前ViewController放入数组中,等待下一次的复用。一般分页控件有多少页,就需要创建多少个页面,当页数较多时,会因为创建了大量的页面对象,导致内存占用过高,出现滑动卡顿的问题,影响用户体验。使用本方法,只需要给子ViewController添加一个标识符,具有相同的标识符的页面,仅仅会创建一次,当该页面不在被使用时,将他放入复用数组里面,每次需要显示页面时,先去找有没有可以复用的页面,如果有就可以复用,然后改变页面上显示的数据就能渲染出页面,如果没有在创建页面。这样就能大幅度降低创建的页面数量,特别是在有大量相似页面时,能够大幅度的降低内存的消耗,提供app的响应速度,提升用户体验。
本发明具有如下有益效果,本方法降低控件和业务代码耦合度的原理主要是利用了向父ViewController添加子ViewController的方法,父ViewController放分页控件的代码,包括整体的位置大小,标题样式等等控件的内容,而子ViewController则存放当前页需要实现的业务代码,达到分页控件的父ViewController无需了解子ViewController中业务细节,实现解耦的目的。本方法降低内存占用的原理主要利用了ViewController复用的方法,当页的界面大致相同,仅仅内容不同时,可以对这种页面添加相同的标志符,当滚动到当前页时,并不会去初始化一个新的ViewController,而且从可复用的数组里面,找出一个未使用的ViewController,重新配置他的内容,来展示界面,降低了创建的相同的ViewController的数量,如果多个页面的布局都大致相同,就能够大幅度的降低内存的占用,提供app响应速度。该方法能够大幅度降低控件和业务代码耦合度和降低内存占用。
附图说明
图1为本发明提供的分页方法的整体效果示意图;
具体实施方式
下面结合附图和具体实施例对本发明进行说明。
实施例1
(1)创建父ViewController,在所述父ViewController上添加分页控件,并且设置所述分页控件的属性;包括设置大小、标题栏的一些配置、动画效果等;
(2)创建子ViewController,在所述子ViewController上实现当前页面所需要实现的业务代码;创建子ViewController时,需要给他指定一个标识符,用于在可以复用的子ViewController的数组里面查找是否有已经创建并且不再使用的ViewController;
(3)创建装有所有子ViewController的数组,把所有需要显示的页面都添加到一个数组里面,传给所述父ViewController的分页控件,用于内容的显示;
(4)创建可以复用的子ViewController的数组,把创建过的子ViewController,当不使用时,放入到该数组中,当再次创建新的子ViewController时,会先在该数组中查找相同标识符的ViewController是否存在,如果存在则直接使用,如果不存在则创建新的子ViewController;对所述新的子ViewController的数据进行配置,完成界面的渲染,当所述新的子ViewController不使用时,将其放入可以复用的子ViewController的数组中,等待下一次的复用。
如图1所示,图1中标题1,2,3,4部分即为分页控件,内容3部分即为子ViewController,用于显示内容,以上两个部分都放在同一个父ViewController里面。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种ios系统中实现分页功能的方法,其特征在于,包括以下步骤:
(1)创建父ViewController,在所述父ViewController上添加分页控件,并且设置所述分页控件的属性;
(2)创建子ViewController,在所述子ViewController上实现当前页面所需要实现的业务代码;
(3)创建装有所有子ViewController的数组,把所有需要显示的页面都添加到一个数组里面,传给所述父ViewController的分页控件,用于内容的显示;
(4)创建可以复用的子ViewController的数组,把创建过的子ViewController,当不使用时,放入到该数组中,当再次创建新的子ViewController时,会先在该数组中查找相同标识符的ViewController是否存在,如果存在则直接使用,如果不存在则创建新的子ViewController。
2.根据权利要求1所述的ios系统中实现分页功能的方法,其特征在于,所述步骤(2)中创建子ViewController时,需要给他指定一个标识符,用于在可以复用的子ViewController的数组里面查找是否有已经创建并且不再使用的ViewController。
3.根据权利要求1所述的ios系统中实现分页功能的方法,其特征在于,所述步骤(4)还包括对所述新的子ViewController的数据进行配置,完成界面的渲染,当所述新的子ViewController不使用时,将其放入可以复用的子ViewController的数组中,等待下一次的复用。
4.根据权利要求1所述的ios系统中实现分页功能的方法,其特征在于,所述步骤(1)中的分页控件的属性包括设置大小、标题栏的一些配置、动画效果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811125002.8A CN109254807A (zh) | 2018-09-26 | 2018-09-26 | 一种ios系统中实现分页功能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811125002.8A CN109254807A (zh) | 2018-09-26 | 2018-09-26 | 一种ios系统中实现分页功能的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109254807A true CN109254807A (zh) | 2019-01-22 |
Family
ID=65048074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811125002.8A Pending CN109254807A (zh) | 2018-09-26 | 2018-09-26 | 一种ios系统中实现分页功能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109254807A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450904A (zh) * | 2017-06-07 | 2017-12-08 | 北京五八信息技术有限公司 | 标题栏的绘制方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288856A1 (en) * | 2004-02-19 | 2007-12-13 | Butlin Stefan G | Layered User Interface |
CN104731589A (zh) * | 2015-03-12 | 2015-06-24 | 用友网络科技股份有限公司 | 用户界面的自动生成方法及自动生成装置 |
CN106201458A (zh) * | 2016-06-27 | 2016-12-07 | 上海波汇科技股份有限公司 | 一种灵活可配的界面生成方法和系统 |
-
2018
- 2018-09-26 CN CN201811125002.8A patent/CN109254807A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288856A1 (en) * | 2004-02-19 | 2007-12-13 | Butlin Stefan G | Layered User Interface |
CN104731589A (zh) * | 2015-03-12 | 2015-06-24 | 用友网络科技股份有限公司 | 用户界面的自动生成方法及自动生成装置 |
CN106201458A (zh) * | 2016-06-27 | 2016-12-07 | 上海波汇科技股份有限公司 | 一种灵活可配的界面生成方法和系统 |
Non-Patent Citations (1)
Title |
---|
张才千等: "《iOS开发从入门到精通》", 31 August 2014, 北京:北京希望电子出版社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450904A (zh) * | 2017-06-07 | 2017-12-08 | 北京五八信息技术有限公司 | 标题栏的绘制方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101122899B (zh) | 报表的生成方法和设备 | |
US6263347B1 (en) | System for linking data between computer and portable remote terminal and data linking method therefor | |
US6813746B1 (en) | Hierarchical master pages | |
US20050278625A1 (en) | Dynamic document and template previews | |
CN107153528A (zh) | 混合模型列表项重用的方法及设备 | |
CN102789372A (zh) | 一种打印方法及装置 | |
CN101251964B (zh) | 一种电子地图兴趣点注记方法、系统及设备 | |
JP2005056039A (ja) | 情報処理システムおよび方法、プログラム、並びに記録媒体 | |
CN114035773A (zh) | 一种基于配置的低代码开发表单方法、系统及装置 | |
US20130117656A1 (en) | Conversion of web template designs | |
CN106469047A (zh) | 一种表单实现方法及装置 | |
CN106227716B (zh) | 一种实现分支选择结构电子文档编辑的系统和方法 | |
CN106681698A (zh) | 动态列表的生成方法及装置 | |
CN109636883A (zh) | 一种基于Canvas的广告图片处理系统 | |
CN102662921A (zh) | 一种文档处理方法、装置和编辑器 | |
CN106933887A (zh) | 一种数据可视化方法及装置 | |
CN108415708A (zh) | 应用程序安装包大小的处理方法、装置、设备和存储介质 | |
CN107977203A (zh) | 存储装置、应用程序控件以及用户界面的创建方法 | |
CN109871210A (zh) | 网页元素修改方法、装置、设备及存储介质 | |
CN101299209B (zh) | 一种表格编辑行高亮显示的方法和装置 | |
CN106156306A (zh) | 一种模板渲染方法和装置 | |
CN106385359A (zh) | 群组与好友自动生成及照片视频分享浏览方法 | |
CN109254807A (zh) | 一种ios系统中实现分页功能的方法 | |
CN104281561B (zh) | 一种数据恢复的方法及电子设备 | |
CN109446506A (zh) | 一种电子表单表格自动再造的方法和装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190122 |
|
RJ01 | Rejection of invention patent application after publication |