Mac开发之NSTableView

Text View算是Mac里面最常用但是最复杂的控件之一,我也是用了一下午的时间才知道如何使用这个控件,Mac控件并不像VC或者C#一样直观上是消息通信模式,也不是通过事件,添加相应对象的子节点去增加控件内容。Text View算是比较特别的控件,复杂的Text View控件可以做出很多复杂的效果,在iPhone上更是如此,最有名的软件如Twitterrific的Mac版本和iPhone版本显示Twits都是使用的Text View。Text View就好像C#中的Gridview,或者C++的listbox。

首先我们创建一个项目叫TextViewTest,创建好之后,我们在Class文件夹下面添加一个类,取名叫Controller(这里可以创建位NSObject或者位NSView的子类都可以)。

创建好之后,我们打开MainWindow.xib文件,然后制作UI如下图所示,我们的需求很简单,单击按钮添加一行数据。

编写好了UI之后,我们就需要连接一些基本的东西,这里我们拖动一个Object对象进来,并改成相应的Class。

拖动过来还需要更改为相应的Controller。

更改后,我们的这个Controller就是我们的Controller类的一个对象了。这里我们需要写一下Controller类,头文件我们可以定义如下。

#import <Cocoa/Cocoa.h>

@interface Controller : NSView { 
    //定义数据源数组 
    NSMutableArray *array; 
    //定义数据源数组的Controller,连接用 
    IBOutlet NSArrayController *arrayController; 
    IBOutlet NSButton *button; 



@property (nonatomic,retain) IBOutlet NSButton *button;

- (void) buttonClicked:(id)sender;

@end

然后我们实现的代码很简单,每次点击都添加一个test字符串。

#import "Controller.h"

@implementation Controller

@synthesize button;

- (void) buttonClicked:(id)sender 

    //添加字符串 
    [arrayController addObject:@"test"]; 
}

- (id)initWithFrame:(NSRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
        // Initialization code here. 
    } 
    return self; 
}

- (void)drawRect:(NSRect)dirtyRect { 
    // Drawing code here. 
}

@end 

编写完成后,我们还需要连接各个对象,例如button连接到代码中的button,button的按下的事件连接到buttonClicked。这里我就不累述了。

Text View是一个可以进行数据绑定的控件,所以前面我才说和C#的GridView很像,不过没有VS那么智能了,这里Text View绑定的是类似数组的对象,所以这里我们还需要拖动一个Arrray Controller,进行数据的连接。

拖动完成之后,我们就需要连接Controller和Array Controller,这两个对象组成一个类+数据源的结构。

拖动完成后,我们需要绑定相应的对象,例如上面绑定的是arrayController,也是我们前面代码定义的一个变量,否则看不到这个连接项。这个时候我们连接前面定义的arrayController,就连接了Array Controller。连接后,我们还需要设置绑定,我们在Array Controller的属性窗口中设置即可。

上图我们就将Array Controller绑定了Controller里的array变量。也就是说Array Controller现在已经成为了数据源,任何array对象的改变都会影响到这个Array Controller。

现在我们再打开UI,找到相应的一列,选中该列(而不是选中大的控件,是其中一列,如下图)。

选中该列,然后在属性窗口中绑定相应的数据源即可,如下图。

绑定完成后,我们只需要操作arrayController里面的元素就可以了,而不需要关心如何绑定到Text View中的,如下代码。

[arrayController addObject:@"test"];

 连接完成后的Controller和Array Controller里的连接如下两图所示。

小结一下:

使用Text View的基本步骤如下。

  • 写Controller,并连接。
  • 创建Array Controller并绑定。
  • 绑定相应的Text View的列。

虽然看上去很简单,但是实践起来还是有一定难度的,建议各位自己动手实践一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值