第一个iOS程序

第一个iOS程序简介

  • 初学iOS开发,研究的程序不要过于复杂,应该从最基本的开始
  • 大房子都是由小砖一块一块堆成的,而大型app是由无数个小程序段组成的
  • 接下来实现一个简单的“加法计算器”,作为第一个iOS程序(Hello World)
  • 分析可得,至少需要开发步骤:

  1. 添加需要的控件,搭建UI界面:1个按钮、3个文本标签、2个文本输入框

  2. 监听按钮的点击事件

  3. 取得2个文本框值,将计算好的最终结果显示到右边的文本标签上

掌握

  • 往storyboard中添加控件

  • UIViewController和UIView的关系

  • 程序的运行过程

  • IBAction、IBOutlet的作用

  • 如何监听控件的事件(比如按钮的点击事件)

  • 父控件和子控件的概念

  • 退出键盘

作业

  • 制作一个QQ登录界面

  • 要求:

  1. QQ文本框要有“请输入QQ”的文字提示(用户输入文字时会自动消失)

  2. 密码文本框要有“请输入密码”的文字提示(用户输入文字时会自动消失)

  3. QQ文本框只能输入数字

  4. 密码文本框的文字必须是暗文显示

  5. 点击登录按钮后输出用户输入的QQ和密码,并且退出键盘

Storyboard文件

  • 在iOS5之前,苹果使用xib文件来描述UI界面

  • 在iOS5之后,苹果采取了更加强大和先进的storyboard文件来描述界面(Xcode5是基于iOS7的)           

  • 左边的箭头表明:程序一启动就会显示箭头所指的界面

UILabel – 文本标签

  • 文本标签的作用仅仅是显示一串固定的文字

UIButton – 按钮

  • 按钮的作用是:监听用户的点击事件,在用户点击后做出反应

UITextField – 文本输入框

  • 文本输入框可以弹出键盘,让用户输入一些具体的值

UIView

  • 屏幕上能看得见摸得着的东西就是UIView,比如屏幕上的按钮、文字、图片
  • 一般翻译叫做:视图\控件\组件
  • UIButton、UILabel、UITextField都继承自UIView
  • 每一个UIView都是一个容器,能容纳其他UIView(比如右图中的整个键盘是一个UIView,里面容纳很多小格子的数字UIView)

父控件和子控件

  • 在“加法计算器”中,最后面那块白色的全屏的东西也是一个UIView
  • 白色的大UIView中容纳了很多小的UIView,视图层次结构如下图所示
  • 在白色的大UIView中,容纳了6个小UIView(1个UIButton、2个UITextField、3个UILabel)

  • 这种情况下,我们可以称白色的大UIView为6个小UIView的父控件(父视图),6个小UIView都是白色大UIView的子控件(子视图)

UIViewController

  • 手机上自带的“设置”中有很多的界面,点击对应的选项可以跳到下一个界面
  • 每一个新的界面都是一个新的UIView,在切换过程中,涉及到了:

  1. UIView的创建和销毁

  2. UIView跟用户的交互(处理UIView内部每一行的点击)

  • 其实,每当显示一个新界面时,首先会创建一个新的UIViewController对象,然后创建一个对应的全屏UIView,UIViewController负责管理这个UIView

  • UIViewController就是UIView的大管家,负责创建、显示、销毁UIView,负责监听UIView内部的事件,负责处理UIView与用户的交互

  • UIViewController内部有个UIView属性,就是它负责管理的UIView对象 :

  1. @property(nonatomic,retain) UIView *view;
  • 严格来讲,下图箭头所指的应该是一个UIViewController对象,里面白色的界面仅仅是UIViewController内部的UIView属性

  • 箭头所指UIViewController的真实类型是MJViewController

加法计算器程序的运行流程

  • 综合分析,可以得出程序的简单运行流程:
  1. 读取Main.storyboard文件
  2. 创建箭头所指的MJViewController对象
  3. 根据storyboard文件中描述创建MJViewController的UIView对象
  4. 将UIView对象显示到用户眼前

如何监听按钮点击

  • 现在已经知道:应该由MJViewController来监听“计算”按钮的点击
  • 换句话说,MJViewController应该提供一个方法出来,当用户点击“计算”按钮时,就调用这个方法来通知MJViewController按钮被人点了
  • MJViewController就在这个方法中实现想做的任何事情,比如计算2个文本输入框内值的和

补充问题

  • IBAction和IBOutlet究竟有什么作用?
  • 还有其他拖线方式么?
  • Storyboard文件中箭头的含义?
  • 如何更换storyboard文件?
  • 如何让文本框只能输入数字?
  • 如何退出键盘?
  • Company Identifier和Bundle Identifier的作用
  • 模拟器还有哪些功能?
  • 特别提醒:iOS7和iOS6的区别

IBAction和IBOutlet

  • IBAction
  1. 从返回值角度上看,作用相当于void
  2. 只有返回值声明为IBAction的方法,才能跟storyboard中的控件进行连线
  • IBOutlet
  1. 只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线

设置程序启动时加载的storyboard

  • 这个设置表明:程序启动时会加载Main.storyboard

设置UITextField的键盘类型

  • 这个设置表明:UITextField弹出的是数字键盘

退出键盘的两种方式

  • resignFirstResponder
  1. 当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘
  • endEditing
  1. 只要调用这个方法的控件内部存在第一响应者,就能退出键盘

02-第一个iOS程序的更多相关文章

  1. 从安装Mac OS X虚拟机到第一个IOS程序

    对于纯粹地抄这种行为是比较抵触的,别人已经写得挺好的东西没必要又去写一遍,但如果不写经验来看下次再做时自己又要重复百度筛选一遍,所以还是要记一记. 之前要获取IOS静态库的版本,但一直以来没有Mac没 ...

  2. 第一个iOS程序:Hello iOS

    今天我们来创建第一个iOS程序:Hello iOS!不需要写任何代码就能实现:

  3. 02-第一个iOS程序-开发步骤

    打开Xcode 选择项目模板 Single View Application是最适合初学者的模板 设置项目属性 运行程序 不管怎样,先运行第一个iOS程序看看效果先(用快捷键Command + R 也 ...

  4. [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld

    首先这篇文章比较长,若想了解Xcode7的免开发者帐号真机调试运行IOS程序的话,直接转到第五部分. 转载请注明原文地址:http://www.cnblogs.com/litou/p/4843772. ...

  5. 【IOS学习】1.第一个IOS程序

    1.执行原理 a.首先执行main函数 调用UIApplicationMain方法 return UIApplicationMain(argc, argv, nil, NSStringFromClas ...

  6. 轻量级应用开发之(01)第一个IOS程序

    一 IPhone轻量级开发 1. 开发环境 Mac 版本: OS X EICap 10.11.3 (15D21) XCode开发版本: Version 7.2.1 (7C1002) 2.简单分析 UI ...

  7. 一个iOS程序员眼中的跨域问题

    摘要: 跨域问题是web开发领域一个常见的问题,相信每个web开发者都遇到"跨域"的问题 最近公司的iOS开发任务比较少,所以自己最近开始了Web开发的任务,在用H5做了很多页面, ...

  8. 02第一个OC程序

    一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...

  9. 第一个ios程序

    1.ios的理解: Operating System,简称OS,操作系统,ios是苹果操作系统. 2.Xcode开发环境: 苹果公司开发的编程软件,是开发人员建立OS X 和 iOS 应用程序的最快捷 ...

随机推荐

  1. flutter initializing gradle终极解决方案

    自己开发的公众号,可以领取淘宝内部优惠券 修改flutter.gradle文件 这种做法网上一大堆的教程,如果你还没改过建议先试下,比如这篇 Flutter 运行 一直Initializing gra ...

  2. Menu 的key dispatch

    DecorView

  3. Web前端面试指导(十二):::before 和:before有什么区别?

    题目点评 这个问题看来很简单,但如果之前没有琢磨这个问题,给人感觉也是门头一垂,听到这个题目就懵逼了,因为原来从来没有注意过这个问题,即便有注意这个问题也不能很好的回答清楚.回答的技巧就是从相同点和不 ...

  4. Intent的简单使用

    主要实现Intent之间值得转递,如从AActivity到BActivity之间传一个数值,一个实体类,一个集合类 下面代码只要是实现对startActivityForResult的使用,用ABC 3 ...

  5. 基本算法思想Java实现的详细代码

    基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为 ...

  6. conversion vs recommendation

    conversion vs recommendation: http://markdisomma.com/2011/06/16/conversation-vs-recommendation/

  7. Microsoft Translator:打破语言障碍 拓展全球沟通新机遇

    作者:Olivier Fontana, 微软研究院Microsoft Translator产品战略总监 世界越来越小,全球协作.共同创新已经成为常态.在微软研究院,我们对此尤为感同身受——从北京到雷德 ...

  8. WAKE-WIN10-SOFT-MATio

    1,matio Matio is an open-source C library for reading and writing binary MATLAB MAT files. This libr ...

  9. ubuntu安装google test

    google test 简称gtest,是一个C/C++的单元测试框架,它的代码在github仓库,使用起来还是挺方便的. 安装 先确保PC上有安装cmake: sudo cmake --versio ...

  10. CRM订单状态的Open, In process和Completed这些条目是从哪里来的

    Service Order的状态字段里的这些字段从哪里带出来的?我们可能会想当然的认为是从后台配的Status profile里带出来的.事实并非如此. 这个transaction type根本没有分 ...