您的位置:首页 > 移动开发 > IOS开发

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:对于显示分辨率不正确的问题还有待继续学习!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 编程