简单生活 发表于 2015-1-18 11:34:53

IOS设计前端之Android进门(4):MVC形式(中)仓酷云

把上面两个对象连在一起把他们变成一个整体所有的CD操作都是通过这个类的这个需要仔细看文档了举个不恰当的例子就像三个人收拾衣服一个人负责衣服的存放位置(NSManagedObjectModel)一个人负责把衣服分类冬天穿夏天穿等(NSPersistentStoreCoordinator)MVC形式的最基础观点是分层计划,把我们的代码基于View(视图)、Model(模子)、Controller(把持器)举行分类封装,如许做的目标是为了明晰布局,使代码更容易保护和扩大。
在上一篇文章中,我们完成了盘算器的界面复原,但严厉来讲并非真实的View类,由于它还没反应视图的逻辑。在此次文章中,我们将编写盘算器程序的View部分,Let’sGo!
(注重:此次在代码的正文中写了较多的点,以是能够多看正文部分)
一,初识Activity

Activity(举动)作为Android四年夜组件之一,相称于使用中的全部界面,用前真个角度看,就像一个web页。而Activity的本色是甚么呢?此次先扼要形貌,从Google年夜神中可知,Activity肇端承继于Context类,来看看它们的形貌关头词:
android.content.Context
Interfacetoglobalinformationaboutanapplicationenvironment…Itallowsaccesstoapplication-specificresourcesandclasses,aswellasup-callsforapplication-leveloperation…
本来Context被界说为关于使用场景(高低文)的笼统类,具有会见使用层面资本和类的权限,并封装了一些使用级其余办法。
android.app.Activity
Anactivityisasingle,focusedthingthattheusercando…interactwiththeuser…takescareofcreatingawindow(full-screenwindowsorfloatingwindows)forplaceUI…
Activity被界说为与用户交互(事务),卖力创立加载视图的窗口等功效的功效类。能够说因Context,使Activity具有壮大的功效。
在入手下手编写前,先先容一个主要的Java文件–R.java,在后面先容过,gen目次会主动天生一些体系必要的文件,翻开R.java:

<br>
R类经由过程attr,color,drawable,id,layout等静态外部类,纪录了一切标识。
(注重:R类的标识会主动天生,不必往修正)
二,在onCreate中编写我们的程序

Activity有个分明的特性,就是有性命周期。能够设想一下平常使用的利用历程,从一个界面滑进至另外一界面,又从以后界面前往,陪伴的就是Activity周期的分歧阶段。翻开Calculator项目标MainActivity.java文件:

<br>
在前端编程中,最主要的是猎取操纵对象(dom)。在Android中也云云,次要经由过程id标识猎取操纵对象。我们起首给activity_main.xml中的TextView和Button加上以下id标识:
(@+id/{name}的意义是在R类中增添为{name}的id标识)


[*]TextView:@+id/ResultOutput
[*]Button数字0~9:@+id/Operand0~@+id/Operand9
[*]Button除号:@+id/Operate0
[*]Button乘号:@+id/Operate1
[*]Button减号:@+id/Operate2
[*]Button加号:@+id/Operate3
[*]Button等号:@+id/Operate4
[*]Button扫除:@+id/Operate5
如图所示,请务必为元素加上准确的id。

<br>
在Android中,次要经由过程findViewById()办法猎取操纵对象,如TextView的猎取:

<br>
在前端编程中,我们能够经由过程getElementsByTagName()办法猎取一系列操纵元素,但在Android中却没那末侥幸了,没有这类办法。那有甚么快速点的体例不?谜底是一定的。我们晓得findViewById()传进的是一个int范例的援用值,那末能否经由过程轮回的体例找出这些援用值,然后间接猎取呢?我们把Button元素分为两组,操纵数的id以Operand0~9定名。而其他为运算符,则以Operate0~5定名(如下面提醒的)。如许我们则能够:

<br>
如许,经由过程一个TextView和两个数组,我们就把必要的操纵元素全体搜集好了。

<br>
三,分别及界说View类的接口

从下面的代码看,统统仿佛都很优美,但这类面向历程的思索体例是招致代码敏捷收缩,难以保护的缘故原由之一。按MVC的计划头脑,下面编写的代码应属于视图部分的逻辑,更好的举措应当封装在视图内,完成细节不被别的类所知。我们如今遵守这一头脑重新构造一下代码:
(注重:这里只朴实地用MVC头脑表达企图,至于分别及编写的公道性就不探求了)
盘算器将由两个View类构成,一个是用于显现了局的CaOutputView类,一个是用于用户输出的CaInputView类。起首创建寄存View类的包,经由过程包辨别分歧范例文件。

<br>

<br>
然后我们创建这两个View类:

<br>

<br>
接着,我们翻开CaInputView.java文件。好了,如今我们来思索一个成绩,CaInputView卖力与用户的交互,天然会晓得用户按了甚么按钮,但如何关照Activity用户的举动呢?这个就是我们筹办要打仗的回调机制的观点。
就比如,CaInputView对Activity说:你把“接洽体例”留我,用户输出了我就关照你。而“接洽体例”有多种完成的体例。此次就经由过程托付的体例完成,相称于iOS中的代办署理(delegate)的观点:

<br>
四,编写View类

如今我们持续编写CaInputView类,把本来Activity类的代码逻辑回进CaInputView类:

<br>
持续编写CaOutputView类,CaOutputView类对照复杂,只用于显现:

<br>
五,在Activity中利用View类

两个View已创立终了,如今能够实验在Activity中利用了:

<br>
上图提醒毛病,是由于实例化了CaInputView,却没有完成接口,以是提醒MainActivity应当完成CaInputView声明的接口:

<br>
完成CaInputView声明的接口后仍旧会报错,由于没完成接口声明的办法,选择“Addunimplementedmethods”则主动增加了办法,以下图:

<br>
最初当CaInputView与用户产生交互时,我们“关照”Activity,而Activity则挪用CaOutputView将了局显现出来,MainActivity类的终极代码以下图:

<br>
运转程序,点击每一个按钮,看是不是显现准确的值:

<br>

如果你现在开始学到编出像样的APPiOS5可能已经普及了可以直接用ARC(另之前对ARC的了解很粗浅现在开发程序完全可以直接ARCiOS4不支持的weak是有办法替代的用unsafe_unretained

莫相离 发表于 2015-1-21 10:31:16

这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。

若相依 发表于 2015-1-26 22:12:11

看《iPhone 4与iPad开发基础教程》,跟着一步步来

冷月葬花魂 发表于 2015-1-30 16:26:59

边吃零食边看Stanford的视频教程

分手快乐 发表于 2015-2-4 12:34:25

因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。

仓酷云 发表于 2015-2-9 20:26:27

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

再见西城 发表于 2015-2-27 21:01:16

培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,

活着的死人 发表于 2015-3-9 13:58:36

重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。

不帅 发表于 2015-3-16 22:43:57

学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。

谁可相欹 发表于 2015-3-22 01:10:11

其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。

因胸联盟 发表于 2015-3-30 00:51:11

重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。

第二个灵魂 发表于 2015-4-2 19:04:59

自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉

飘灵儿 发表于 2015-4-5 01:40:20

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

愤怒的大鸟 发表于 2015-4-21 15:45:10

近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,

金色的骷髅 发表于 2015-4-26 23:05:21

近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,

admin 发表于 2015-4-28 08:49:44

还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看,希望可以帮到你,谢谢。

飘飘悠悠 发表于 2015-5-1 07:10:30

AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

灵魂腐蚀 发表于 2015-5-3 10:12:26

在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。

精灵巫婆 发表于 2015-6-27 21:37:40

边吃零食边看Stanford的视频教程

柔情似水 发表于 2015-7-7 01:05:09

看《iPhone 4与iPad开发基础教程》,跟着一步步来
页: [1]
查看完整版本: IOS设计前端之Android进门(4):MVC形式(中)仓酷云