Cocoa China 苹果开发中文站

苹果Mac OS X开发 iPhone开发 Cocoa以及Cocoa Touch

推荐使用Safari浏览器阅读本站

NSTableView

如何用代码手工创建NSTableView

某些情况下,我们可能需要使用手工编写代码而不是使用Interface Builder建立NSTableView。尤其在我们需要修改NSTableView其中的内容的时候,这变得更加重要,而开发文档中写的不是很清楚。

以下这段简单的代码可以手工创建一个NSTableView,可以帮你节省一点查资料的时间。

 

点击这里阅读全文 »

教学:如何实现拖拽文件到NSTableView中

本例带您实现一个简单的例子,这个例子并不能做太复杂的事情,您可以从Finder中拖拽任何文件到列表里,拖拽后,文件名将会添加在列表中。

您可以在这个例子里学习NSTableView、绑定以及剪贴板的简单使用方法。

 

点击这里阅读全文 »

使NSTableView同时支持拖拽替换和拖拽插入

当你的NSTableView做为一个拖拽目标时,你可能希望同时支持拖拽替换当前项目,或者拖拽后在当前位置插入新的项目。你需要使用NSTableView -setDropRow:dropOperation:方法。本文介绍如何通过代码实现NSTableView的这种拖拽功能。

点击这里阅读全文 »

TableView连接DataSource的方法

你的数据源需要实现如下两个方法:

 
- (int) numberOfRowsInTableView: (NSTableView *) tableView
- (id) tableView: (NSTableView *) tableView
objectValueForTableColumn: (NSTableColumn *) tableColumn
                             row: (int) row

在NSTableView选择项改变时获取通知

代码如下所示:

- (void) tableViewSelectionDidChange: (NSNotification *) notification

{
    int row;
    row = [tableView selectedRow];
           
    if (row == -1) {
        //do stuff for the no-rows-selected case
    }

    else {
       // do stuff for the selected row
    }
           
}
 
这段代码需要放在NSTableView的delegate里。如果没有delegate,可以将自身设置为delegate。

在NSTableView排序时,我们可以通过增加一个小小的三角箭头图形,让表格的排序看得更加清楚。 

将这段代码放到 mouseDownInHeaderOfTableColumn 或者 didClickTableColumn
 
NSImage *indicatorImage;
if (sortAscending) {
            sort your data ascending
            indicatorImage = [NSImage imageNamed: @"NSAscendingSortIndicator"];
} else {
            sort your data descending
            indicatorImage = [NSImage imageNamed: @"NSDescendingSortIndicator"];
}
sortAscending = !sortAscending;
 
[tableView setIndicatorImage: indicatorImage
                               inTableColumn: tableColumn];
 
[tableView reloadData];

将NSTableView表格视图拖拽到其他位置

如果你希望使NSTableView被拖拽到其他位置,你需要在数据源中实现如下代码:

 
- (BOOL) tableView: (NSTableView *) view
         writeRows: (NSArray *) rows
      toPasteboard: (NSPasteboard *) pboard

响应NSTableView项目中的双击事件

如何响应NSTableView中双击项目的事件呢?

使用NSTableView -setDoubleAction:方法,给其指定一个标准的IBAction风格的方法选择器。
你还可以通过先设定-setEditable:NO,再通过-setTarget:方法获取双击的消息。
 

当用户在修改表格中的数据时,按回车、TAB或者shift+TAB键,会结束当前的编辑,同时跳到下一行。

但是某些时候你可能不希望跳到下一行,用户希望编辑特定的行,并不想编辑其他行。那么如何用代码禁用这一功能呢?

点击这里阅读全文 »

最新讨论