2014-05-08
建立第一个MACApplication 应用,使用MAC里面的Xcode软件
主要使用的是:Cocoa控件技术
以下实现的功能是:一个MAC应用,显示2个编辑框,2个便签,4个按钮,按钮可以改变标签和EditBox内容。
开始:MAC的系统,打开Xcode开发编辑器(免费自带的开发工具,类似VS2010)
STEP 1 : New -> MAC Application : Cocoa Application
STEP 2 : m文件相当于cpp文件, h文件相当于h文件,xib文件相当于界面集合文件,
STEP 3 : 让开发环境,最左边显示文件夹目录架构
左边第二列显示界面设置xib文件
左边第三列显示m文件
最后一列显示各种控件聚合面板
STEP4 : 在界面上增加各种控件后,点击Button Control, 然后按住 Ctrl 键,拉动到m文件的倒数第二行,就是在@end前面。
解释:这个CTRL+拉动控件到代码m文件里的动作的作用:自动将控件和一个函数绑定。不用手动去绑定了。
注意:当你拉动过去后,会自动弹出一个输入函数名称的对话框。
主要生产的代码有:
例如:一个Cbutton控件
在m文件的@end前自动生成的代码是:
-(IBAction) OnBT_Change1(id) sender
{
}
STEP 5 将EditBox控件名称放入到h里面,以便其他控件能控制这个控件
点Edit1 + Ctrl,然后拉动到h文件里面,当然是@end前面,记住@end表示所有代码的结束标志。
然后就会自动生成代码:
@property (assign) IBOutlet NSTextField*m_Edit_Name1;
这时候需要手动增加一行代码到对应的m文件里面,才能用这个公共变量。
在m文件的@implementation增加一句:
@synthesize m_Edit_Name1;
这样在m文件里面,才可以使用。
例如在上面的按钮函数里面增加
-(IBAction) OnBT_Change1(id) sender
{
m_Edit_Name1.stringValue =@”Hello”;
}
这时候编译,运行,OK!成功!
点击一个按钮,一个编辑框内会显示 Hello字符串。
结束。
补充:第二种设定控件变量,以便其他控件能用的方法是
(1) Ctrl + 控件 拉动到h文件里面,生成
property (assign) IBOutlet NSTextField*m_Edit_Name2;拷贝这行代码,然后在
@interface 的下一行增加{}
在{}里面粘贴刚才拷贝的代码,去掉property (assign) 就可以了。
这样就不用再在m文件里手动写:@synthesize m_Edit_Name2;
两种方法的好坏我现在无法评价,如果从程序的一次书写多次使用的特性,我喜欢用第二种设定控件变量的方法。这种方法也稍微接近C++
但是按照操作简易来说,专门在m里面再写一次,也不错。但是理解上有点绕口。
测试编译,成功!
结束。
后面还有很长的路要走,慢慢摸索吧。
代码如下
H文件
#import <Cocoa/Cocoa.h>
@interface QXSAppDelegate : NSObject <NSApplicationDelegate>
{
IBOutlet NSTextField *m_Edit_Name2;
}
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSTextField *m_Edit_Name1;
@end
M文件
#import "QXSAppDelegate.h"
@implementation QXSAppDelegate
@synthesize m_Edit_Name1;
- (void)dealloc
{
[super dealloc];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
}
- (IBAction)OnBT_Change1:(id)sender
{
m_Edit_Name1.stringValue = @"Orange";
}
- (IBAction)OnBT_Change2:(id)sender
{
NSString *str_Edit2_Value;
str_Edit2_Value = @"Apple";
m_Edit_Name2.stringValue = str_Edit2_Value;
}
- (IBAction)OnBT_OK:(id)sender
{
}
- (IBAction)OnBT_Cancel:(id)sender
{
}
@end
结束。