【iOS 初见】第一个简单的 iOS 应用
本实例来自 《iOS编程(第4版)》,介绍如何编写一个简单的 iOS 应用。
功能为:在视图中显示一个问题,用户点击视图下方的按钮,可以显示相应的答案,用户点击上方的按钮,则会显示一个新的问题。
步骤如下:
1.创建一个新的Xcode项目 Hello_iOS,具体看下图:
2.新建一个视图控制器类文件 QAViewController ,注意看下图:
3.选取QAViewController.xib 文件,从对象库中拖拽4个Label 、2个 Button 如下图摆放。
4.为对象创建关联。首先,修改QAViewController.m 文件如下:
#import "QAViewController.h" @interface QAViewController () //声明插座变量
@property (nonatomic,weak) IBOutlet UILabel *questionLabel;
@property (nonatomic,weak) IBOutlet UILabel *answerLabel; @end @implementation QAViewController @end
5.设置声明的插座变量,如下图所示:
6.重新打开QAViewController.m 文件,声明两个按钮的动作方法:
@implementation QAViewController -(IBAction)showQuestion:(id)sender
{ } -(IBAction)showAnswer:(id)sender
{ } @end
7.接着要关联声明的动作方法,设置目标和动作(按住Control并拖拽或按住右键拖拽至File's Owner):
8.以上完成了此应用的XIB文件,创建并设置了应用所需的视图对象,并为视图对象和控制器对象创建了所有必需的管理。下面就需要开始创建模型对象。在项目导航面板中选择 QAViewController.m 文件,修改代码如下:
//
// QAViewController.m
// Hello_iOS
//
// Created by YeChao on 15/12/5.
// Copyright (c) 2015年 Luka.Ye. All rights reserved.
// #import "QAViewController.h" @interface QAViewController () //声明插座变量
@property (nonatomic,weak) IBOutlet UILabel *questionLabel;
@property (nonatomic,weak) IBOutlet UILabel *answerLabel; //声明一个整形对象和两个数组对象
//整形变量用于跟踪用户正在回答的问题
@property (nonatomic) int currentQuestionIndex;
//两个数组用于存储一系列问题和答案
@property (nonatomic,copy) NSArray *questions;
@property (nonatomic,copy) NSArray *answers; @end @implementation QAViewController -(instancetype) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
//调用父类实现的初始化方法
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) {
//创建两个数组对象,存储所需的问题和答案
//同时,将 questions和 answers分别指向问题数组和答案数组
self.questions = @[@"你叫什么名字?",@"你觉得你帅吗?",@"今年是哪一年?",@"明明可以靠脸吃饭,为何要靠才华?"];
self.answers = @[@"可以叫我叶小超。",@"还行吧。",@"公元2015年",@"这是和明明的差距,要努力啊。"];
} //返回新对象的地址
return self;
} -(IBAction)showQuestion:(id)sender
{
//进入下一个问题
self.currentQuestionIndex++; //是否已经回答完了所有问题?
if (self.currentQuestionIndex==[self.questions count]) {
//回到第一个问题
self.currentQuestionIndex =;
} //根据正在回答的问题序号从数组中取出问题字符串
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;
} @end
9.如果现在运行项目,将只能看到一个空白的屏幕,无法看到在 QAViewController.xib 文件中创建的用户界面。为了在屏幕上显示用户界面,必须将视图控制器和应用中的另一个控制器关联——AppDelegate 。
在项目导航面板中选择 AppDelegate.m 文件。在 application didFinishLaunchingWithOptions:方法中创建 QAViewController 对象,并将它设置为 UIWindow 对象的根视图控制器。
#import "AppDelegate.h"
#import "QAViewController.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //在这里添加应用启动后的初始化代码
QAViewController *qaVC = [[QAViewController alloc] init];
self.window.rootViewController = qaVC; self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
10.按住 command+R 运行项目,效果如下:
11.没有设置应用图标的话,会是一块白板。应用图标是一张图片,用于在主屏幕上指代应用。不同设备对图标的尺寸要求也不同。
12.设置应用图标:选中项目导航面板中的 Images.xcassets 条目,如下图从Finder拖拽至AppIcon区域的设置块上。
13.重新运行项目就可以了。
【iOS 初见】第一个简单的 iOS 应用的更多相关文章
- iOS开发之WKWebView简单使用
iOS开发之WKWebView简单使用 iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版. ...
- 一步一步拆解一个简单的iOS轮播图(三图)
导言(可以不看): 不吹不黑,也许是东半球最简单的iOS轮播图拆分注释(讲解不敢当)了(tree new bee).(一句话包含两个人,你能猜到有谁吗?提示:一个在卖手机,一个最近在卖书)哈哈... ...
- iOS开发网络篇—简单介绍ASI框架的使用
iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...
- iOS狂暴之路---iOS的第一个应用中能学到哪些知识
一.前文回顾 在之前已经介绍了 iOS的学习路线图,因为中间遇到一些Android开发问题,所以就耽搁了一段时间,那么接下来的这段时间我们将继续开始iOS的狂暴之路学习,按照国际惯例,第一个应用当然是 ...
- iOS开发UI篇—简单的浏览器查看程序
iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...
- iOS开发UI篇—简单介绍静态单元格的使用
iOS开发UI篇—简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...
- Xamarin iOS编写第一个应用程序创建工程
Xamarin iOS编写第一个应用程序创建工程 在Xcode以及Xamarin安装好后,就可以在Xamarin Studio中编写程序了.本节将主要讲解在Xamarin Studio中如何进行工程的 ...
- iOS开发Swift篇—简单介绍
iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...
- 李洪强iOS开发之- 实现简单的弹窗
李洪强iOS开发之- 实现简单的弹窗 实现的效果: 112222222222223333333333333333
随机推荐
- 小白学Linux--虚拟机下安装Ubuntu16
最近接收到任务,说是下半年可能要搞全文检索.听到后顿时炸锅了,一方面是对新技术的兴奋(当然主要还是这技术比较值钱),另一方面,我TM连Linux都不会玩,怎么搞全文检索.怀揣着对开源世界的无线向往(恐 ...
- jquery ajax 用 data 和 headers 向 java RESTful 传递参数区别
jquery 的 ajax 是非常方便的一个函数,记录一下 $.ajax 生成的 http 报文 一.使用 data 传递参数: $.ajax({ url : "webrs/test/add ...
- window下安装redis
以cmd安装方法: .下载安装包:https://github.com/dmajkic/redis/downloads .安装包下载后根据操作系统选择对应版本文件,里面会有几个dll分别为: redi ...
- linux下socket编程
相关结构 //下边这两个结构定义在<sys/types.h>里 //一般的地址结构,只能用于覆盖(把其他地址转换为此类型),且只能引用该地址的sa_family字段 struct sock ...
- .NET AES加解密(128位)
AES加密(128位): /// <summary> /// 有密码的AES加密 /// </summary> internal static string Encrypt(s ...
- [zz] JIT&HotSpot
zz from 百度百科 最早的Java建置方案是由一套转译程式(interpreter),将每个Java指令都转译成对等的微处理器指令,并根据转译后的指令先后次序依序执行,由于一个Java指令可能被 ...
- [性能] Bean拷贝工具类性能比较
Bean拷贝工具类性能比较 引言 几年前做过一个项目,接入新的api接口.为了和api实现解耦,决定将api返回的实体类在本地也建一个.这样做有两个好处 可以在api变更字段的时候保持应用稳定性 可以 ...
- html5 大幅度地增加和改良input元素的种类
增加和改良input元素 url类型.email类型.date类型.time类型.datetime类型.datetime-local类型.month类型.week类型.number类型.range类型 ...
- 初识Asp.net Identity
第一篇,多多指教啦! 之前做asp.net的网站只知道Asp.net的身份验证方式有:Windows验证和Forms验证.今天初步了解了下asp.net的Identity技术,顺带了解了它之前的Mem ...
- CSS的一些小事
1.什么时候能将零散的图片整合成一张大图,达到减少请求数的作用? 答:整合进大图的图片是被设置no-repeat用的,如果是repeat-x.repeat-y就不可以. 2.E + F 选择紧贴在E元 ...