【转】使用Xcode中的iOS SDK给iphone开发出第一个App程序
之前已经折腾过用Xcode开发OS X的程序了,现在继续折腾,用iOS SDK开发移动设备(iphone/ipad/ipod touch)的程序。
1.从iOS Developer Library中找到了Start Developing iOS Apps Today,所以就跟着教程去试试。
2.从教程中才知道,原来移动设备,是包括这三个:iPad, iPhone, and iPod touch
教程中也说了,会涉及到Xcode+iOS SDK,Objective-C,Cocoa Touch Framework,如何建一个iOS的app并且在设备上测试,以及如何提交app到App Store。
另外,关于是否需要注册成为Apple开发者:
写app和在模拟器上测app,是不需要的;但是想要在设备上测app和发布app则是需要的。
3.安装教程提示,去Your First iOS App学习学习。
创建新项目,选择Single View Application:
其中,另外几个Template,教程解释道:
Master-Detail创建出来的程序就像Mail;
Tabbed创建出来的就像iTunes;
然后设置项目名字和配置:
然后选择一个地方存放你的项目,以及对于那个source repository不要选,然后就打开了项目了:
汗,好像写错项目名了,写成HelloWord了。。。
无所谓,继续。
暂时不需要Utility Area,所以去关闭该窗口:
然后点击Run,就可以看到iPhone模拟器出现了:
然后验证可以运行了,先退出iOS模拟器:
当前的Supporting Files中的main.m为:
相应的info list文件为:
storyboard为:
然后再打开Utility->Attributes inspector:
按照教程去看,差点没看懂,差点没找到找到如何打开background配置界面的。
后来还是自己摸索出来的,先点击View Controller下面的View,然后右边的Attribute inspector自动就打开了配置界面了:
然后才看懂教程,原来最开始是要选择View的。。
然后就可以点击Background的那个白色长方形,在弹出的颜色设置中,设置自己所要的背景色了:
然后运行看看效果:
然后按照教程,在恢复回白色:
然后再运行一下,看看效果,顺带同时保持了你当前的设置。
然后接着去添加Text Field:
拖动放到View中,然后再通过View Controller->View->Text Field选中后,用鼠标拖动至合适的位置,比如:
再在placeholder中输入名字,再去设置对齐:
然后再把Label:
按照同样方法添加到View中:
再添加button:
然后命名为Hello:
然后去配置好Text Field:
然后运行试试效果。
点击按钮,是可以高亮的:
点击到Text Field可以调出键盘:
如教程所说,暂时没实现功能呢,所以暂时无法关闭键盘。
然后再按照教程,确保当前选中的是MainStoryboard.storyboard
然后,此时是可以看到对应的界面的,然后我这里右边会显示出CRLViewControl.h文件,而不是.m文件,而直接点击左边的CRLViewControl.m文件的话,此时Hello的界面没了,会变成CRLViewControl.m的内容,所以不是所想要的。
后来经过折腾发现,原来是在右边,显示了CRLViewControl.h的上面,点击图标,可以看到,有CRLViewControl.h和CRLViewControl.m两个,选择CRLViewControl.m:
即可出现对应的.m的内容,此时就可以继续操作了:
然后配置好connection:
然后点击Connet,然后会看到一个灰色的小圆点,移动上去,会看到Hello按钮显示出提示:
继续去添加Outlet:
然后填入参数,配置好:
教程提到了,现在编译器会自己给accessor methods做synthesize,所以不用再加@synthesize
了。
同样的,也去给label建立关联:
然后打开Utility,关闭Assistant,点击到Connections inspector,就可以看到各个连接关系了。
鼠标移动上去,就可以显示出来关系:
其实,就类似于VS 2010中,建立控件,比如label时,你所设置label的名字,而mac却把这label空间本身和其源文件.m中的变量,割裂开来,然后另外再手动建立两者的联系罢了。
再去设置Text Field的delegate:
不过话说,目前为止,好像还是不是很清楚这个delegate的作用。。。
选择Outlets中的delegate后,变为:
教程也说了,其实这些内容,都是可以手动去写代码的,只是让Xcode帮你自动生成,会减少你的代码输入量而已。
(也减少可能的由于笔误而造成的错误)
去Run了下,结果和之前一样,点击按钮会高亮,点击text field会调出键盘输入。
接着就是写代码了。
在CRLViewController.h添加了property
在CRLViewController.m中去实现对应的changeGreeting。
抄写代码过程中还觉得很奇怪,为何不直接使用textField.text而还要新建一个NSString来存放字符串。
看了后面教程的解释,才知道,原来是Mac中的model object决定的:
app的数据,是不应该让UI部分的东西来存放的,即此处app的将要显示的text内容,应该自己建一个NSString来保存,而不应该用textField的text部分来保存其要处理(要显示)的数据。
然后继续按照提示,添加delegate代码,最后Run成功如下:
至此,终于完成第一个iOS的app了。
虽然不是全懂,但是大概明白流程了。
from :http://www.crifan.com/develop_application_for_iphone_using_ios_sdk_xcode/
【转】使用Xcode中的iOS SDK给iphone开发出第一个App程序的更多相关文章
- 【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具. 其功能是,帮你模拟iOS平台设备,在模拟器上运行对应的程序,以方便你没有实体设 ...
- 【整理】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
[整理]Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得 iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具 ...
- 【转载】C#中List集合使用LastOrDefault方法查找出最后一个符合条件的元素
在C#的List集合中,FirstOrDefault方法一般用来查找List集合中第一个符合条件的对象,如果未查到则返回相应默认值.其实如果要查找最后一个符合条件的List集合元素对象,可以使用Las ...
- 使用 JavaScript 中的 window 对象执行计时操作,完成一个抽奖程序
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 window 对象执行计时操作,完成一个抽奖程序 实现思路: 在 HTML 页面中放置背景图片.转盘和指针 3 张图片,并设置指 ...
- iOS:iPad和iPhone开发的异同(UIPopoverController、UISplitViewController)
iPad和iPhone开发的异同 1.iPhone和iPad: niPhone是手机,iPad.iPad Mini是平板电脑 iPhone和iPad开发的区别 屏幕的尺寸 \分辨率 UI元素的排布 \ ...
- IOS开发——01_第一个OC程序
本文目录 一.新建Xcode项目 二.运行项目 注:建议先学习C语言, 如果你还没有编程经验,看不懂的地方可以在评论区提出,本文使用的为Xcode6.1版本,与之前版本会有所差异,但总体不变. 另:还 ...
- Xcode中的iOS工程模板
1. Application类型 我们大部分的开发工作都是从使用Application类型模板创建iOS程序开始的.该类型共包含7个模板,具体如下所示. Master-Detail Applicati ...
- Xcode 中的IOS工程模板
1.IOS模板主要分为: Application .Framework.Other application 分为:Master-Detail Application 可以构建树形导航模式引用,生成的代 ...
- Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
http://www.crifan.com/intro_ios_simulator_in_xcode_and_usage_summary/
随机推荐
- MongoDB 管理工具:Robomongo
http://www.open-open.com/lib/view/open1383029577546.html
- P2P通信标准协议(一)之STUN
前一段时间在P2P通信原理与实现中介绍了P2P打洞的基本原理和方法,我们可以根据其原理为自己的网络程序设计一套通信规则, 当然如果这套程序只有自己在使用是没什么问题的.可是在现实生活中,我们的程序往往 ...
- 重温《js权威指南》 第7,8章
第七章 数组 数组是值的有序集合.js数组是无类型的,数组元素可以是任意类型,同一个数组中不同元素也可能有不同的类型.数组可以动态增长或缩减,创建时无须生命那个一个固定的大小并且数组大 ...
- android 点九PNG技术 适应不同分辨率 完美显示效果
.9.png是一种非失真性压缩位图图形文件格式.PNG格式是非失真性压缩的,允许使用类似于GIF格式的调色板技术,支持真彩色图像,并具备阿尔法通道(半透明)等特性.现在有很多人使用PNG格式于互联网及 ...
- MySQL 数据库性能优化之索引优化
接着上一篇 MySQL 数据库性能优化之表结构,这是 MySQL数据库性能优化专题 系列的第三篇文章:MySQL 数据库性能优化之索引优化 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引 ...
- WEB前端介绍
1.WEB前端是神马 Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征.在互联网的演化进程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为 ...
- Mongodb数据操作基础
var mongodb = require('mongodb'); var server = new mongodb.Server('localhost', 27017, {auto_reconnec ...
- lib-qqwry v1.0 发布 nodejs解析纯真IP库(qqwry.dat)
lib-qqwry是当初学习node时用来练手的一个模块,用来解析纯真IP库的 现在发一个v1.0版本弥补我当时稚嫩的代码. 意外收获是,整理代码后发现,相比v0.x版本 急速模式下的效率提升大概20 ...
- ubuntu下设置环境变量的三种方法【转】
转自:http://blog.chinaunix.net/uid-26916352-id-3208366.html 通常设置环境变量有三种方法: 一.临时设置 export PATH=/home/ya ...
- PCB阻抗调节
在PCB厂家调节的阻抗指的是:传输线的“特征阻抗”,反映传输线上所走“行波”某点的电压和电流的比值,与线长无关.传输线本身的特性. 线宽:反比 介质厚度:正比