那么本篇简单入门下Cocoa application吧;
首先安装Xcode,这个东东,神器一样的东东不解释;
OK,打开Xcode,创建一个项目;如下图:
一路下去后我们创建好了第一个cocoa application,虽然是个空项目,但是基本的Menu和window 已经自带了。
OK,首先在AppDelegate.h 和AppDelegate.m 下编写一点小代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
//
// AppDelegate.h
// CountApp
//
// Created by Himi on 12-6-3.
// Copyright (c) 2012年 Himi. All rights reserved.
//
#import
@interface AppDelegate : NSObject
{
IBOutlet NSButton *btn1;
IBOutlet NSButton *btnResult;
IBOutlet NSTextField *tfShow ;
IBOutlet NSTextField *tfResult;
}
@property (assign) IBOutlet NSWindow *window;
-(IBAction)btnPress:(id)sender;
@end
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
//
// AppDelegate.m
// CountApp
//
// Created by Himi on 12-6-3.
// Copyright (c) 2012年 Himi. All rights reserved.
//
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
- (
void
)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
}
-(IBAction)btnPress:(id)sender{
if
(sender == btn1){
NSString *str = [NSString stringWithFormat:@
"%@%@"
,[tfShow stringValue],@
"1"
];
[tfShow setStringValue:str];
}
else
if
(sender == btnResult){
[tfResult setStringValue:[tfShow stringValue]];
}
}
@end
|
简单说下代码:
1 . NSButton — 按钮 ;
NSTextField 文本条;
2. IBoutlet :一般都说叫“插座变量”,Himi则喜欢说“仍”来形容;比如 IBOutlet NSButton *btn1 说通俗些就是把 btn1这个对象从代码中扔出来,能让我们的Interface Builder识别;
3. IBAction :动作,如果一个方法返回值是IBAction,则表示这个方法是由IB 界面的对象触发;
OK,下面接着打开MainMenu.xib文件:
a) 刚才就说啦,xcode为我们生成项目时,已经把基础的window和Menu都创建好了,而且启动项目后执行main.m入口函数中会默认加载这个MainMenu.xib文件啦;
b) 这里Himi简单加入了12个Button(Push Button)和两个TextField,还有一个image well做背景;如下图:
OK,然后要做的只有两步,首先在选中你左侧的 App Delegate如下图:
然后看你的项目最右侧Utilities窗口:
在这里你就可以看到你之前在代码中扔出来的一些对象和方法了。比如btn1,tfResult, 方法btnPress等,那么细心的童鞋可能看到有个btn后面是个“!”感叹号,这个表示对应的对象找不到了,因为大家看到之前代码中根本没有对应扔出所谓的btn,原因是之前Himi的NSButton对象是起名字btn,后来改名字了,所以这里提醒了,大家这里要注意下;
然后将我们这些扔出来的对象跟你想对应控件关联一下吧,加入这里我们连接btn1,如下图:
其他的大家按照此方式连接吧,函数也一样哦,如果你想让你的btnPress函数接受哪些控件触发后相应次函数,那么也一样连接就OK啦。
当然除此之外有个简单的连接方法,就是hold住你的control键,然后鼠标点击xib中左侧App delegate然后move到你想关联的组件,然后松开鼠标选中你希望连接的代码中扔出来的对象即可;如下图所示:
那么这里Himi只是简单的将btn1,btnResult,和两个textfield进行关联,用于简单的演示,并没有把这个计算器也完整。。。大家不要这里吐槽我什么标题党 – -。真没必要写完整,写完整了就是浪费时间不是么~ 要效率学习哈哈;
OK,回头分析下AppDelegate代码:
在 -(IBAction)btnPress:(id)sender{}函数内;
首先判断响应的组建是否是btn1,如果是OK,让刚才在xib中最上面的textfield(tfShow)显示出来,如果响应的是btnResult(“=”等号)那么我就让tfShow用户输入的都打印到我们window最下方的textfield(tfResult)上;
OK,下面是这个简单application的演示截图: