Loading.. Current Page is Loading.

Mac开发 - Table View(1)

31. January 2010

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的列。

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

TextViewTest.zip (29.47 kb)

Mac开发 , , ,

Add comment


(Will show your Gravatar icon)  

(Match case,A is not a!)
  Country flag

biuqbr
  • Comment
  • Preview
Loading



About me

Hello,欢迎来到我的博客,我叫郭靖(但不是大侠),我是一个程序员,现居北京,同时我还爱好设计和前端开发。
jguoer.comshangducms.com都在使用,还可以通过前缀dxwt访问电信和网通线路。:)

Suggest Articles

Loading..
感谢风云互联提供免费稳定优质的企业级主机 京ICP备09081424号 Best view on Mac OS X