构建 iPhone 应用程序的基础知识






4.36/5 (10投票s)
构建 iPhone 应用程序的基础知识。
引言
您是一名程序员,正在寻找新的挑战吗?构建您自己的 iPhone 应用程序的念头是否让您心跳加速、脉搏加快?您是否熟悉 MAC 开发 (XCODE)?如果是,那么开始 iPhone 开发吧。这是一个学习 iPhone 开发的简单方法。
在本文中,我将解释如何轻松地在 Apple iPhone / iPod touch 中创建一个基本的“hello world”应用程序。如果您熟悉 MAC,那么编写 iPhone 应用程序就像编写 MAC 应用程序一样简单。
背景和环境
Apple 发布了支持 XCode 3.1.2 的 iPhone SDK。要安装 SDK,您需要注册 Apple 以获取 AppleID。MAC 版本 10.5 (Mac Leopard) 是安装 iPhone SDK 3.1.2 的最低操作系统版本。通过此安装,您可以编写 iPhone 的示例程序,但 MAC 需要您支付 99 美元才能在 iPhone 设备上运行它们。出于测试目的,您可以使用 iPhone 模拟器。通过支付 99 美元订阅 iPhone 开发者计划,您可以开始在 iPhone 设备上部署和运行您的应用程序。Apple 提供了简单的步骤来完成此过程,因此我将不详述。
创建新项目
成功安装 iPhone SDK 和 XCode 后,现在是时候创建一个新项目并启动一个示例应用程序了。
选择 文件 > 新建项目 或 Apple 键 + Shift + N 打开新建项目菜单。在左侧菜单中,选择 iPhone OS 部分的 应用程序 项,然后在右侧的图标中选择 基于视图的应用程序。选择 选择 以输入项目名称,我在示例代码中使用了 HelloWorld。
类和包
创建项目“HelloWorld
”后,除了其他一些文件外,您还可以找到三个重要包:Classes
、Resources
和 Frameworks
。
Classes
包用于 iPhone 应用程序中使用的类控制类,Resources
包用于存放所有资源,如图像、文档等,Frameworks
包用于存放当前项目使用的框架。
Classes
包中有四个文件
- HelloWorldAppDelegate.h
- HelloWorldAppDelegate.m
- HelloWorldViewController.h
- HelloWorldViewController.m
委托头文件包含一个指向 UIWindow
的引用对象,该对象用于控制应用程序的所有 UI 用户交互。它还管理所有其他界面组件。它还包含一个指向视图控制器 (HelloWorldViewController
) 的引用。
在 HelloWorldAppDelegate.m 文件中自动生成的 applicationDidFinishLaunching
方法会在应用程序加载时调用。在此方法中,我们将创建一个 HelloWorldViewController
对象,并将此对象添加到 UIWindow
以使视图可见。
[window addSubview:viewController.view];
[window makeKeyAndVisible];
iPhone SDK 基于 MVC(模型-视图-控制器)设计模式。因此,所有视图始终与视图控制器对象一起存在。XCode 的自动代码生成器默认会生成视图接口,即 HelloWorldViewController.xib 文件。双击 .XIB 文件,您就可以在 Interface Builder (IB) 中打开视图。您也可以在 IB 中检查视图和控制器之间的关系。
现在是时候向我们的视图添加控件了。有两种方法可以将控件添加到视图:以编程方式或使用 Interface Builder (IB)。在本例中,我将讨论如何以编程方式添加控件。
定义控件
打开 HelloWorldViewController.h 文件,在接口声明中,定义以下变量
IBOutlet UIView *viewHelloWorld; //View to display HelloWorld
IBOutlet UIButton *btnShow; //Click this Button to display text “HelloWorld”
IBOutlet UILabel *lblHelloWorld; //Label to hold “HelloWorld” Text
定义一个视图以添加按钮和标签以显示“HelloWorld
”文本。并定义一个方法来处理按钮的点击事件,并定义用于访问 UI 元素的属性。
我们正在定义一个用于显示视图的视图,以及一个要放入视图的按钮和标签。在花括号之后,添加一个方法声明以接受按钮的点击事件,并添加用于访问 UI 元素的属性;myButton
、myLabel
和 viewHelloWorld
。您的全部代码看起来应该像这样
#import <UIKit/UIKit.h>
@interface MyHelloWorldViewController : UIViewController
{
IBOutlet UIButton * btnShow;
IBOutlet UILabel * lblHelloWorld;
IBOutlet UIView * viewHelloWorld;
}
- (IBAction)handleEvent:(id)sender;
@property (nonatomic, retain) UIButton * btnShow;
@property (nonatomic, retain) UILabel * lblHelloWorld;
@property (nonatomic, retain) UIView * viewHelloWorld;
@end
合成控件
合成 UI 元素以创建 getter 和 setter。在 @implementation
行之后,在 HelloWorldViewController.m 文件中添加以下行
@synthesize btnShow;
@synthesize lblHelloWorld;
@synthesize viewHelloWorld;
取消注释 loadView
方法,并将以下行添加到该方法中以创建按钮和标签
- (void)loadView
{
// create and configure the view
CGRect cgRct = CGRectMake(0.0, 0.0, 480, 320); //define size and position of view
viewHelloWorld = [[UIView alloc] initWithFrame:cgRct];//initialize the view
viewHelloWorld.autoresizesSubviews =YES; //allow it to tweak size of
//elements in view
self.view = viewHelloWorld; // create a UIButton (UIButtonTypeRoundedRect)
//and play around with settings
btnShow = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnShow.frame = CGRectMake(100,100, 100, 50); // size and position of button
[btnShow setTitle:@"Display" forState:UIControlStateNormal];
button.backgroundColor = [UIColor clearColor];
btnShow.adjustsImageWhenHighlighted = YES;
//Add action handler and set current class as target
[btnShow addTarget:self action:@selector(action:)
forControlEvents:UIControlEventTouchUpInside];
//Display Button
[self.view addSubview:button];
//create a label
cgRct = CGRectMake(100, 170, 100, 50); //define size and position of label
lblHelloWorld = [[UILabel alloc] initWithFrame:cgRct];
lblHelloWorld.text = @"Hello World";
//Display Label
[self.view addSubview:lblHelloWorld];
}
构建并运行
单击 构建并运行 按钮以检查您的界面是否正确绘制。它应该看起来像下面的屏幕截图
编写事件
UIControlEventTouchUpInside
在当前类中定义事件后,我们需要定义处理程序来接收事件。以下方法定义了事件的处理程序。当此事件触发时,它会将标签文本更改为“Hello World
”。
-(void)action:(id)sender
{
label.text =@"Bye World";
}
现在再次单击 构建并运行 按钮,然后单击该按钮。标签的文本应更改为“Bye World”。
历史
- 2010 年 5 月 4 日:初始帖子