目的
大笔一挥,HelloWorld,开发入门!
环境
Mac OS X 10.7.2
Xcode4.2
步骤
1:构建界面(相当于写.aspx)
拖放一个文本框和一个按钮到MainStoryboard_iPhone.storyboard上
2:映射控件(相当于写.aspx.design.cs。在VisualStudio中这一步是自动帮我们完成的)
2.1、映射文本框,以在代码中可以引用它
右击文本框,拖放其中的“New Referencing Outlet”的右边的小圈圈至ViewController.h放开。在弹出的对话框中设置文本框的名字为“txtName”。
完成后,会在
ViewController.h文件中生成以下代码:
@property (weak, nonatomic) IBOutlet UITextField *txtName;
ViewController.m文件中生成以下代码:
@synthesize txtName;
2.2、映射按钮的点击事件
右击按钮,拖放其中的“Touch Up Inside”右边的小圈圈至ViewController.h放开。在弹出的对话框中设置事件处理方法的名字为“buttonClicked”。
完成后,会在
ViewController.m文件中生成以下代码:
- (IBAction)buttonClicked:(id)sender {
}
3:写后台代码(相当于写.aspx.cs)
打开ViewController.m文件,找到在2.2步骤中生成的按钮点击事件处理方法,在里面写引用文本框的文本弹出对话框的代码。
- (IBAction)buttonClicked:(id)sender {
UIAlertView* alert=[[UIAlertView alloc]
initWithTitle:@"hello"
message:txtName.text
delegate:self
cancelButtonTitle:@"退出"
otherButtonTitles: nil];
[alert show];
}
4:设置为“iPhone 5.0 Simulator”后运行
备注
当前代码中各变量的内存管理是自动模式。内存资源比较昂贵,之后要学习为变量手动释放内存。
关于IBOutlet与IBAction的解释:
这两个都是只为开发环境(Xcode)提供的宏标记,定义如下:
#define IBAction void
#define IBOutlet
可以看到,IBOutlet除了告诉Interface Builder此变量可以被映射到界面上的控件外没有额外的作用,而IBAction除了告诉Interface Builder此变量可以被映射到界面上的控件的某事件作为其处理方法外也定义此函数无返回值(事件处理方法本来就应该无返回值)。
类似C++,“.h”为头文件,“.m”相当于“.cpp”为实现文件。
对于@property与@synthesize的解释:
两者配合使用,目的是让编译好器自动编写一个与数据成员同名的方法。前者用于在.h头文件中做方法声明,而后者即为实现。