iOS: 第一个iphone app

zz/2024/5/21 21:22:48

参考视频:http://s3.amazonaws.com/screencasts.pragmaticstudio.com/013_ib_xcode4.mov



1. run Xcode, select "create a new project > view-based application", input "project name" as "HelloWorld", "company identifier" as "edu.cityu.mobile" (company identifier相当于javapackage), uncheck "include unit tests"


2. select project path, uncheck "create local git repository for this project", and then click "Create"


3.看看project的目录结构:

* "HelloWorld"目录下包含的是files for your project (主要包含Objective-C class (.h file and .m file) and .xib files (xib file是用来包含interface的信息,相当于android的layout xml file))。本例包含的文件有

>MainWindow.xib应用程序主窗口。(窗口的东东稍后详解)

> HelloWorldAppDelegate.hHelloWorldAppDelegate.m应用程序的委派

> HelloWorldViewController.hHelloWorldViewController.m视图控制器,主要是界面的控件响应函数

> HelloWorldViewController.xib应用程序默认的view

* "HelloWorld"目录下还有一个"Supporting files"目录,里面包含"main function file", an application wide header file "xxx-", 以及要用到的picture, data等。

>HelloWorld-Info.plist应用程序配置文件,包含icon、名字、主窗口的nib文件(nib == xib)等。相当于android的android-manifest.xml

> InfoPlist.string: i18n locale string info file

>main.mmain函数,应用程序入口

> HelloWorld_Prefix.pch:一些公用的头文件。在该文件里import的lib,将会缺省被import到所有的文件里

* "Frameworks"目录相当于eclipse的"lib reference",里面包含你可以引用的frameworks,例如Foundation framework, UIKit.framework等

* "products" 目录,project生成的产品就放在该目录


4. 添加a button and a label控件到你的.xib界面

1)click "HelloWorldViewController.xib" in the left "project navigator" panel,左边就会出现主界面的interface。

2)click xcode右上角toolbar的"View"区域的第三个button "Hide or show the utilities",将会在xcode的最右边出现utilities panel (它包含属性控制view,控件库的list等),该panel的下方区域,在toolbar  中点第三个"Show the object lib",就会出现可用的控件,然后drag and drop a button and a label to interface.


  

5. 把.xib绑定到ViewController上,因为只有绑定了,才能够让ViewController来控制.xib的控件以及处理.xib的event。 (.xib的绑定原理见 http://www.cnblogs.com/liubiqu/archive/2011/09/08/2171969.html)


1)还是click "HelloWorldViewController.xib" in the left "project navigator" panel, 然后在界面的左边有一个button named "File's owner",click it

2)确认在右边的"utilities panel"的"custom class" tab的"class" field的值为HelloWorldViewController

3)  click xcode右上角toolbar的"Editor"区域的第二个button "show assistant editor" ,这样在界面窗口的右边就会出现对应的.h file editor窗口以便你进行界面和.h file的绑定

4) 为了方便操作, 可以先暂时隐藏左边的project navigator panel" and 右边的"utilities panel"

5)选择界面中的相应控件,创建outlet action方法。按住 Control键,从界面拖拽控件(如buttontextboxlabel等等)(注:或者右击并拖拽),到 @interface header文件中。

在本例中,把label控件拖拽定as IBOutlet,and 把button控件拖拽定as IBAction用于理"tap inside" event handler

拖拽绑定的详解见:

* http://oleb.net/blog/2011/06/creating-outlets-and-actions-via-drag-and-drop-in-xcode-4/

* http://www.entlib.net/?p=897

做了绑定的动作,会自动生成下列代码

* 在对应的.h里添加了

@interface HelloWorldViewController :UIViewController {

    UILabel *lblInfo;

}


@property (nonatomic,retain)IBOutletUILabel *lblInfo;


- (IBAction)clickButton:(id)sender;


@end

* 在对应的.m里添加了

@synthesize lblInfo;

- (void)viewDidUnload

{

    [selfsetLblInfo:nil];

。。。

}

- (void)dealloc {

    [lblInforelease];

。。。

}

- (IBAction)clickButton:(id)sender {

}


创建绑定很方便,但是取消绑定就相对麻烦点。你需要以下几步:

step 1: show "utilities panel" first, 然后选择 "show the connection inspector" 

step 2: 在界面上选择你已经绑定的控件,这时在"connection inspector"里就会列出该控件的绑定情况,你如果要取消绑定,就点对应connection的"x"

step 3: 上面的步骤只是取消了绑定,但之前创建绑定时自动生成的代码以及你自己添加的与该控件相关的代码依然还在,你要手动删除。(当然不删除也会编译运行成功) 


取消后如何再度绑定:按住control键,把控件拖拽到已经存在于.h里的method/property上即可,详见参考视频


绑定实际上有多种方式,上面介绍的最常用的方式,其他方式详见http://s3.amazonaws.com/screencasts.pragmaticstudio.com/013_ib_xcode4.mov

6)添加button click handler的代码

- (IBAction)clickButton:(id)sender {

   self.lblInfo.text=@"Hello World!";

}


7)运行。搞定!



http://www.ngui.cc/zz/2731650.html

相关文章

install python 3.2, django and eclipse pydev plugin in mac for python devolopment

Step 1. install eclipse 3.7 or later Step 2. install python 3.2 (ref link: http://www.youtube.com/watch?vMEmEJCLLI2k ) 注意:我安装了python3.2后,在"terminal"里输入命令 "python --version",出现的版本是v2.7…

iOS: NSString应该用initWithFormat? 还是 stringWithFormat?

注意:对于iOS 5的ARC特性来说,两个方法是等价的,不会有memory leak的问题!(ref link: http://stackoverflow.com/questions/7960912/stringwithformat-vs-initwithformat-under-arc) 下面文字的参看文档: …

iOS: Some issues about push notification

custom data in push notification http://no001.blog.51cto.com/1142339/642817 当运行带apns feature的app到真机上后,会弹出错误: "Error DomainNSCocoaErrorDomain Code3000 "no valid aps-environment entitlement string found for a…

iOS: #define

typedef与#define的区别。 http://www.sf.org.cn/article/base/200608/18988.html #define 是宏定义,所谓的宏定义,就是将某段代码、地址、字符串等一串的文字,用一个宏来代替。#define是一种预处理。 #define与typedef功能类似&#xff0…

Raphael无法处理event的问题!!!

当你用下列代码画一个矩形,然后click it,照例应该会popup alert var paper Raphael("canvas", 600, 480); var rect paper.rect(10, 40, 50, 50); rect.click(function () {alert(hello); }); 但实际上并不会popup alert,是…

iOS: NSUserDefaults issues

NSUserDefaults用于存储一些app setting。当你关闭app之后再打开后,之前存储的setting依然可以从NSUserDefaults里读取。注意:密码最好不要存储在NSUserDefaults里,要存储也必须用AES/DES加密存储,更安全的方法是 https://github.…

Hibernate: cannot simultaneously fetch multiple bags 问题的解决办法

如果在一个pojo里使用超过一个List的变量,则会出现这个错误 详见: http://www.quanlei.com/2011/10/2817.html 他提供了4个解决方法,我采用方案3: 改变FetchMode为Fetch(FetchMode.SUBSELECT) 其他参考links: http://www.mkyong.…

iOS: UI 开发

中文 http://blog.csdn.net/column/details/zhf156.html Table View http://www.raywenderlich.com/312/beautiful-table-view-helper-class http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html http://cocoawithlove.com/2010/12/uitableview-co…

iOS: login window design

QuickDialog https://github.com/escoz/QuickDialog QQ登录界面demo http://www.cocoachina.com/bbs/read.php?tid69074&page1 Login interface design http://www.photoshop-plus.co.uk/2012/04/13/clean-mobile-login-screen-tutorial/ iPhone Modal View Smalle…

iOS: Classes for fetching and parsing XML or JSON via HTTP

http://cocoawithlove.com/2011/05/classes-for-fetching-and-parsing-xml-or.html