iOS编程:学习篇(一)
2015-06-23 20:32
387 查看
chapter 1
虽然从事C语言开发BIOS工作,但是依旧被面向对象的快捷方便所吸引。接下来静下心来,准备学习学习iOS编程,希望来年能够从事iOS开发工作,希望能够做一个愉快的码农,并且能够继续深入研究数据结构和算法。
摒弃速成的培训班视频,入手老美的一本《iOS编程》,从点滴做起,犹如当初学习C语言,对Objective-C保持热情!
在成为iOS程序员,必须克服三道难题:
- 必须学会Objecitve-C语言。
- 必须掌握Cocoa的常用技术。
- 必须掌握框架(framework)。
第一个简单的iOS应用
首先尝试编写一个简单的iOS应用——Quiz。功能如下:在视图显示一个问题,用户点击视图下方的按钮,可以显示相应的答案,用户点击上方的按钮,则会显示一个新问题。两个基本问题:
1. 如何创建并设置对象
2. 如何处理用户交互
MVC模式
视图对象是用户可以看见的对象。在Quiz应用中,显示问题和答案的标签以及标签下方的按钮都是视图对象。模型对象负责存储数据,与用户界面无关。Quiz应用中的模型对象是两个包含字符串对象的数组:questions数组和answers数组。
控制器对象用于控制视图对象为用户呈现的内容,以及负责确保视图对象和模型对象的数据保持一致。
Quiz
四个视图对象:两个UILabel对象和两个UIButton对象两个控制对象:AppDelegate和QuizViewController的对象各一个
两个模型对象:NSArray对象两个
tips:对于delefate的用法还有些疑问?
首先从.xib文件学习拖控件开始:
构建项目时,所有XIB文件都会被编译为NIB文件,然后Xcode会将NIB文件拷贝至应用的程序包中。程序包其实就是目录,其中包含应用的可执行文件和其会用到的所有资源文件。
通过在XIB文件拖动控件(在Interface Builder一种可视化编辑器,可以用拖动对象的方式来创建图形用户界面),已经简单将view界面建立起来了,但是现在他还不具有任何功能,接下来我们需要将QuizViewController和视图关联起来。
关联,一个对象可以知道另一个对象在内存的位置,从而使这两个对象协同工作。
插座关联(outlets):指向对象的指针
动作(actions):一种方法,这种方法在视图对象和用户对象发生交互时会被调用
// 声明一个插座变量,指向一个UILabel对象。IBOutlet关键字告诉Xcode之后会使用Interface Builder关联该插座变量。 @property (nonatomic, weak) IBOutlet UILabel *questionLabel; @property (nonatomic, weak) IBOutlet UILabel *answerLabel;
声明动作方法:showQuestion:和showAnswer:
// IBAction关键字告诉Xcode之后会使用Interface Builder关联动作 - (IBAction)showQuestion:(id)sender{ // 进入下一个问题 self.currentQuestionIndex++; // 是否已经回答完所有的问题? if(self.currentQuestionIndex == [self.questions count]){ self.currentQuestionIndex = 0; } // 根据正在回答的问题序号从数组中取出问题字符串 NSString *question = self.questions[self.currentQuestionIndex]; // 将问题字符串显示在标签上 self.questionLabel.text = question; // 重置问题的答案是什么? self.answerLabel.text = @"???"; } - (IBAction)showAnswer:(id)sender{ // 当前问题答案是什么? NSString *answer = self.answers[self.currentQuestionIndex]; // 在答案标签上显示相应答案 self.answerLabel.text = answer; }
创建模型对象
// 为了确保用户在看到应用界面时,数组已经存储了所需的问题和答案,必须在QuizViewController对象创建完毕之后立即创建数组。 - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { // 调用父类实现的初始化方法 self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if(self){ // 创建两个数组对象,存储所需的问题和答案,同时,将questions和answers分别指向问题数组和答案数组 self.questions = @[@"From what is cognac made?", @"What is 7+7?", @"What is the capital of Vermont?"]; self.answers = @[@"Grapes", @"14", @"Montpelier"]; } return self; }
屏幕上显示视图控制器
已经成功将两个Label和两个Button和ViewController关联起来,但是为了在屏幕上显示用户界面,必须将视图控制器和应用中另一个控制器关联(AppDelegate)。重点:在使用Xcode开发iOS应用时,所有的应用模板都会自动帮读者创建一个应用程序委托,它是每一个iOS应用都必须具备的启动入口。应用程序委托负责管理应用的UIWindow对象。UIWindow对象表示应用唯一的根视图控制器(root view controller)。
在AppDelegate中application: didFinishLaunchingWithOptions:这条消息添加应用的初始化代码。
QuizViewController *quizVC = [[QuizViewController alloc] init]; self.window.rootViewController = quizVC;
ok!大功告成!
Quetion:对于显示分辨率不正确的问题还有待继续学习!
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 肯特·贝克:改变人生的代码整理魔法
- 你应该学习哪种编程语言?
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- [转]我们需要一种其他人能使用的编程语言
- DB2编程序技巧(1)
- DB2编程序技巧 (四)
- 女人VS编程_国庆快乐
- DB2编程序技巧 (六)
- DB2编程序技巧 (三)
- DB2编程序技巧 (九)
- DB2编程序技巧 (七)
- DB2编程序小小技巧
- DB2编程序技巧 (五)
- DB2编程序技巧 (一)