02-第一个iOS程序-开发步骤
打开Xcode
选择项目模板
- Single View Application是最适合初学者的模板
设置项目属性
运行程序
- 不管怎样,先运行第一个iOS程序看看效果先(用快捷键Command + R 也行)
运行结果
- Xcode会启动一个iOS模拟器来运行程序
- 程序的运行结果如右图所示,白白一片
- 后面我们得往这空白界面上增添各种各样的控件元素
窥探项目环境
- 项目创建完毕后,自动帮我们做了很多配置,也自动生成了很多文件
- 还自动添加了开发所依赖的框架:
如何搭建UI界面
- 项目中这么多文件,哪些是影响着UI界面的呢?
- 在iOS5之前,苹果使用xib文件来描述UI界面
- 在iOS5之后,苹果采取了更加强大和先进的storyboard文件来描述界面(Xcode5是基于iOS7的)
- 因此,可以得出结论:
- 修改项目中的Main.storyboard文件就可以修改UI界面
窥探Main.storyboard
- 打开Main.storyboard文件一看,里面有一个全白的界面
- 其实这个界面就是模拟器上显示的界面
- 左边的箭头表明:程序一启动就会显示箭头所指的界面
显示工具栏
- 要想往storyboard的界面中添加其他控件,得显示工具栏
显示控件库
- 以九宫格形式展示控件库,能同时看到更多的控件
- 从右图中可以看到各种各样的控件,比如按钮、标签、文本输入框等等
添加控件
- 鼠标左键,长按右边的某个控件,即可将它拖拽到左边的白色界面上
修改控件属性
- 单击选中某个控件后,可以在右边的菜单工具栏中更改控件的属性
运行效果
- 运行程序可以发现,软件界面基本搭建完毕,也能通过键盘输入数字了
增加监听按钮的方法
- 打开MJViewController.m,在类扩展中增加方法声明
@interface MJViewController ()
// 这里先把IBAction看做是
void - (IBAction)compute;
@end
- 在.m中声明的方法是私有方法,外界无法直接访问,保证了封装性
- 增加方法实现:
@implementation MJViewController
- (void)compute
{
NSLog(@"点击了计算按钮");
}
@end
建立 按钮 与 方法 的联系
- 接下来,就是建立按钮和compute方法之间的关系
- 先点击storyboard,然后点击“中分”按钮
- 现在已经能同时看到storyboard上的按钮 和 compute方法了,接下来建立它们之间的联系
- 按住Control键,用鼠标左键将按钮拖线到compute方法上,然后松开
- 方法左边的圈圈由空心变为实心,说明已经跟某个按钮进行了连线
就这样,点击“计算”按钮,就会自动调用compute方法了
运行程序
- 重新运行程序后,点击“计算”按钮,会发现控制台已经有输出信息
增加控件属性
- 现在已经能够监听按钮的点击事件了,接下来应该在MJViewController的compute方法拿到两个文本框值,然后把计算结果显示到最右边的文本标签
在类扩展中,声明3个属性,用来访问storyboard中的3个控件
- @property (nonatomic, weak) IBOutlet UITextField *number1;
- @property (nonatomic, weak) IBOutlet UITextField *number2;
- @property (nonatomic, weak) IBOutlet UILabel *result;
- 提醒
IBOutlet和weak的作用会在后面解释
初学者最容易犯、最不应该犯的一个错误:钻牛角尖
建立 控件 和 属性 的联系
- 按住Control键,用鼠标左键将控件拖到对应属性上,然后松开
利用MJViewController的number1属性就能访问第1个文本框;
利用MJViewController的number2属性就能访问第2个文本框;
利用MJViewController的result属性就能访问右边的文本标签。
计算和
- 在compute方法中计算两个文本框的和,将结果显示到右边的标签中
- (void)compute
{
// 获取第一个数值
int num1 = [self.number1.text intValue];
// 获取第二个数值
int num2 = [self.number2.text intValue];
// 设置文本标签的值
self.result.text = [NSString stringWithFormat:@"%d", num1 + num2];
}
UI控件 和 控制器的关系
02-第一个iOS程序-开发步骤的更多相关文章
- [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld
首先这篇文章比较长,若想了解Xcode7的免开发者帐号真机调试运行IOS程序的话,直接转到第五部分. 转载请注明原文地址:http://www.cnblogs.com/litou/p/4843772. ...
- ios程序开发杂记
ios程序开发杂记 一.程序构建 与一般的程序构建无太大区别,都是源文件编译链接这一套,通常是在mac上做交叉编译,也就是利用xcode里带的ios编译工具集去生成arm架构的ios程序(或是x86的 ...
- 从安装Mac OS X虚拟机到第一个IOS程序
对于纯粹地抄这种行为是比较抵触的,别人已经写得挺好的东西没必要又去写一遍,但如果不写经验来看下次再做时自己又要重复百度筛选一遍,所以还是要记一记. 之前要获取IOS静态库的版本,但一直以来没有Mac没 ...
- 02-第一个iOS程序
第一个iOS程序 第一个iOS程序简介 初学iOS开发,研究的程序不要过于复杂,应该从最基本的开始 大房子都是由小砖一块一块堆成的,而大型app是由无数个小程序段组成的 接下来实现一个简单的“加法计算 ...
- iOS开发系列--IOS程序开发概览
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- 第一个iOS程序:Hello iOS
今天我们来创建第一个iOS程序:Hello iOS!不需要写任何代码就能实现:
- 轻量级应用开发之(01)第一个IOS程序
一 IPhone轻量级开发 1. 开发环境 Mac 版本: OS X EICap 10.11.3 (15D21) XCode开发版本: Version 7.2.1 (7C1002) 2.简单分析 UI ...
- IOS程序开发中-跳转到 发送短信界面 实现发短信
前言:我发现我标题取的不好,谁帮我取个承接上下文的标题?评论一下,我改 项目需求:在程序开发中,我们需要在某个程序里面发送一些短信验证(不是接收短信验证,关于短信验证,传送门:http://www.c ...
- iOS 程序开发
准备 iOS 开发 之 编程知识点 iOS 程序调试 iOS 之 OC开发实战 iOS 架构模式 iOS 之 新功能.扩展
随机推荐
- Java网络编程二
向web站点发送get post请求,并从web站点取得响应 通相应的set方法,在调用connect()方法前,可以设置请求的各种参数,实现同浏览器类似的访问,调用connect()后可以调用相应的 ...
- C++里创建 Trie字典树(中文词典)(一)(插入、遍历)
萌新做词典第一篇,做得不好,还请指正,谢谢大佬! 写了一个词典,用到了Trie字典树. 写这个词典的目的,一个是为了压缩一些数据,另一个是为了尝试搜索提示,就像在谷歌搜索的时候,打出某个关键字,会提示 ...
- 梁宇轩 mysql 语句学习一 对表的操作
1.SHOW TABLES; -- 查询库中所有的表 2 .CREATE TABLE test(id INT(20) PRIMARY KEY NOT NULL AUTO_INCRE ...
- css样式学习小知识
1. 使用百分比设置宽高 自适用宽高的,有分割的区域,可以适用百分比:30% 70% 如果有一部分是固定的宽度或者高度,可以使用:height: calc( 100% - 36px ); 2. inp ...
- table是可语义化
为了使我们的网站更好的被搜索引擎抓取收录,更自然的获得更高的流量,网站标签的语义化就显得尤为重要.所谓标签语义化,就是指标签的含义. 为了更好的理解标签的语义化,先看下面这个例子: <table ...
- Dynamics CRM RibbonWorkbench工具使用
这边用的是RibbonWorkbench2016的工具,导入RibbonWorkbench2016解决方案即可.导入成功后在解决方案下面会多出一个快捷键小图标. 一.基本介绍 二.列表页获取选中记录的 ...
- centos 7使用yum安装docker容器
使用yum命令即可安装 yum install docker 安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动: [root@localhost ~]# systemctl ...
- May 13th 2017 Week 19th Saturday
Mountains look beautiful from a distance. 远处看山山更美. This gnomic seems to circulate very long, its mor ...
- MySQL:数据库入门篇3
1.sql语句逻辑执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_t ...
- luogu P1503 鬼子进村
嘟嘟嘟 线段树好题. 其实挺水的,想暴力怎么做:每一次从这个点开始向两边扩,直到遇到第一个摧毁的房屋. 那么把暴力改成倍增,然后线段树查询区间和是否为0.时间复杂度O(nlog2n). 题解好像有线段 ...