【Cocoa(mac) Application 开发系列之二】总结一些常用控件及自定义View

上一篇已经对于xib与控件之间的关系都大致介绍了;

那么本篇不再详细解释如何如何连接控件以及控件代码等,直接给出代码以及需要注意的简单介绍下,便于童鞋们使用时可以给与参考:

1. 首先创建一个MyView类,继承NSView,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
//
//  MyView.h
//  ManyControlTest
//
//  Created by Himi on 12-6-6.
//  Copyright (c) 2012年 Himi. All rights reserved.
//
 
#import <Cocoa/Cocoa.h>
 
@interface MyView : NSView
@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
36
37
38
39
40
//
//  MyView.m
//  ManyControlTest
//
//  Created by Himi on 12-6-6.
//  Copyright (c) 2012年 Himi. All rights reserved.
//
 
#import "MyView.h"
 
@implementation MyView
- (id)initWithFrame:(NSRect)frame
{
     self = [super initWithFrame:frame];
     if  (self) {
         // Initialization code here.
     }
     
     return  self;
}
 
- ( void )drawRect:(NSRect)dirtyRect
{
     
     NSString * str =@ "MyView   --by Himi" ;
     
     //属性包装设置
     NSMutableDictionary *dic = [NSMutableDictionary dictionary];
     
     //设置字体样式
     [dic setObject:[NSFont fontWithName:@ "Times"  size:14] forKey:NSFontAttributeName];
     
     //设置字体颜色
     [dic setObject:[NSColor redColor] forKey:NSForegroundColorAttributeName];
     
     //绘制
     [str drawAtPoint:NSMakePoint(50, 50) withAttributes:dic];
}
 
@end

代码很easy理解,不在赘述啦~

下面我们看一些基础常用控件:

?
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
36
37
38
39
40
41
42
43
//
//  AppDelegate.h
//  ManyControlTest
//
//  Created by Himi on 12-6-3.
//  Copyright (c) 2012年 Himi. All rights reserved.
//
 
#import <Cocoa/Cocoa.h>
#import "MyView.h"
 
@interface AppDelegate : NSObject <NSApplicationDelegate,NSTabViewDelegate>
{
     
     IBOutlet NSTextField *nfCount;
     
     IBOutlet NSView *view ;
     
     IBOutlet NSButton *btn;
     
     IBOutlet NSPopUpButton *popBtn;
     
     IBOutlet NSSegmentedControl * nsc;
     
     IBOutlet NSForm *nForm;
     
     IBOutlet NSMatrix * ms;
     
     IBOutlet NSStepper * nsp;
     
     IBOutlet NSTabView *tbView;
     
     IBOutlet NSColorWell * nsWell;
     
     IBOutlet MyView * myView;
     
}
 
-(IBAction)btnPress:(id)sender;
 
@property (assign) IBOutlet NSWindow *window;
 
@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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//
//  AppDelegate.m
//  ManyControlTest
//
//  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
{
     //------绑定Delegate
     [tbView setDelegate:self];
}
-(IBAction)btnPress:(id)sender{
     
     //------ 处理NSButton的
     if (btn == sender){
         [myView setHidden:YES];
     }
     
     
     //------处理NSPopUpButton
     if (popBtn == sender){
         NSLog(@ "%@" ,[popBtn itemTitleAtIndex:0]);
         NSLog(@ "%@" ,[popBtn itemTitleAtIndex:1]);
         NSLog(@ "%@" ,[popBtn itemTitleAtIndex:2]);
     }
     
     //------处理 NSSegmentedControl
     if (nsc ==sender){
         NSLog(@ "%i" ,[nsc isSelectedForSegment:0]);
         NSLog(@ "%i" ,[nsc isSelectedForSegment:1]);
         NSLog(@ "%i" ,[nsc isSelectedForSegment:2]);
     }
     
     //------处理 NSForm
     if (nForm == sender){
         NSLog(@ "NSForm Cell 1 is %@" ,[[nForm cellAtIndex:0] stringValue]);
 
         NSLog(@ "NSForm Cell 2 is %@" ,[[nForm cellAtIndex:1] stringValue]);
 
         NSLog(@ "NSForm Cell 3 is %@" ,[[nForm cellAtIndex:2] stringValue]);
     }
 
     //------处理NSMatrix
     if (ms == sender){
         NSLog(@ "NSMatrix is Select = %@" ,[[ms selectedCell] title]);
     }
 
     //-----处理 NSStepper
     if (nsp == sender){
         
         NSString *string = [NSString stringWithFormat:@ "%i" , ( int )[nsp doubleValue]];
         [nfCount setStringValue:string];
     }
     
     //-----处理 nsWell
     if (nsWell == sender){ 
         NSColor* color =  [nsWell color];
         NSLog(@ "R=%f,G=%f,B=%f" ,[color greenComponent],[color redComponent],[color blueComponent]);
     }
}
 
//------处理 tbView
//-(void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem{}
-( void )tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem{
     if  ([tbView indexOfTabViewItem:tabViewItem] == 0) {
         NSLog(@ "view 111" );
     } else  if  ([tbView indexOfTabViewItem:tabViewItem] == 1) {
         NSLog(@ "view 222" );
     }
}
 
@end




本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/969970,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值