标签: nstablecolumn

排序NSTableColumn内容

我有一个排序NSTableColumn内容的问题.在我的NSTableView中有三列:文件,大小,路径.内容存储在NSMutableArray中.此数组中的每个对象都是一个包含三个键的NSDictionary:文件,大小和路径 - 每个键的值都是NSString.

在Interface Builder中,在每个Table Column的属性中,我可以选择排序选项:Selector:IB输入"compare:",我认为没问题,因为我比较了NSStrings.排序键 - 这就是我认为的问题 - 我不知道该在这里输入什么.

有线索吗?如果您对我的代码有疑问,请询问.

sorting objective-c interface-builder nstablecolumn

9
推荐指数
1
解决办法
6364
查看次数

以编程方式将列(带有绑定)添加到基于视图的NSTableView?

我有一个简单的应用程序列出了一些模型NSTableView.

该表是一个完全标准的基于视图的表,包含几列,并通过NSArrayController使用绑定进行填充.所有这些都是在Interface Builder中设置的,它可以正常工作.

现在,我想以编程方式添加更多列,并将这些新列绑定到模型中的各种键路径.在那里,我被困住了.

为简单起见,假设此设置:

  1. Model对象是只有一个NSString属性的普通对象: name
  2. AppDelegate有一个NSArray属性(models),它包含许多Model实例.
  3. NSArrayController content绑定到应用程序委托的models数组.
  4. NSTableView content绑定到阵列控制器arrangedObjects.
  5. 表的第一列绑定(在IB中)以显示name属性,即列→表格单元格视图→静态文本表格视图单元格→ 绑定到表格单元格视图的objectValue.name

据我所知,这是直截了当的,并且通过这本书,它就像一个魅力.

但是......如何添加更多列呢?

要以编程方式添加列(为了简单起见,我们只是说这个新列应该只显示name属性,就像已经存在的列一样),我想我会在app delegate中做这样的事情:

NSTableColumn* newColumn = [[NSTableColumn alloc] initWithIdentifier:@"newColumn"];

// do binding magic somehow
// [[newColumn dataCell] bind:NSValueBinding toObject:??? withKeyPath:??? options:nil];

[self.table addColumn:newColumn]; // the table's connected with an IBOutlet
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多从/到数据单元,表,列,数组控制器,数组本身以及各种键路径的绑定组合,但没有任何作用.新列添加得很好,但它从未填充过.

我想我创建的基本NSTableColumn实例是基于单元格的,而不是基于视图的,这会造成麻烦.但是,我不知道如何从这里开始,文档从不谈论以编程方式添加的绑定列.

在这种情况下,我想要的只是一个简单的文本列,绑定到模型,就像我可以轻松设置IB的那样.

我可以通过实现NSTableViewDataSource和"手动"输入表来完成所有这些操作,但我已经完成了其他所有已经设置的绑定.

任何帮助将不胜感激.

cocoa nstableview nstablecolumn cocoa-bindings

9
推荐指数
1
解决办法
4414
查看次数

如何在NSTableVIew中禁用排序?

我有一个NSTableView,当我点击一个特定的标题列时,表中的数据被反转或排序颠倒.我已经检查NSTableView过,NSTableColumn但找不到任何禁用此功能的方法.如果有人可以通过点击特定列的标题来帮助禁用此排序,我将不得不这样做.

sorting objective-c nstableview nstablecolumn

8
推荐指数
1
解决办法
3515
查看次数

为什么我的NSTableView中的图像逐渐淡出?

首先,有一个NSArrayController("服务器"),其内容是"服务器"对象的数组.

我也有NSTableView一个专栏.该列绑定到Server的"arrangeObjects.status"属性.

我使用自定义NSValueConverter,以使该状态成列的图像dataCell这是一个NSImageCell.

我不明白的是为什么列中显示的图像是正确的,但一直消失.只是为了测试,我在表格视图外面有相同的图像进行比较,它绘制得很好.图像中的颜色不是半透明的.

NSImageCell绘制图像是否褪色?我可以在IB中配置哪些东西将它们完全饱和?

cocoa nstableview nstablecolumn cocoa-bindings nsimagecell

7
推荐指数
1
解决办法
822
查看次数

使用 Swift 中的绑定以编程方式创建基于视图的 NSTableView

我正在阅读 Swift 中的 Cocoa 一书,但我被困在关于 Bindings 的一章中。这本书使用 nib 文件,但我想以编程方式完成所有工作(因为我加入了一个不使用 nib 的团队)。该项目是创建视图基于表2列和表中的内容被绑定到arrangedObjects阵列控制器的。数组控制器的内容绑定到一组 Employee 对象(Employee 有 2 个属性,即姓名和薪水)。

我能够像下面那样以编程方式创建表格(一个滚动视图,一个表格视图,2 个表格列):

let tableWidth = windowWidth! * 0.6
let tableHeight = windowHeight! * 0.8

scrollView = NSScrollView(frame: NSRect(x: windowWidth!*0.05, y: windowHeight!*0.08, width: tableWidth, height: tableHeight))

employeeTable = NSTableView(frame: NSRect(x: 0, y: 0, width: tableWidth, height: tableHeight))
employeeTable?.bind("content", toObject: (self.arrayController)!, withKeyPath: "arrangedObjects", options: nil)

nameColumn = NSTableColumn(identifier: "name column")
nameColumn?.width = tableWidth * 0.4
nameColumn?.headerCell.title = "Name"

raiseColumn = NSTableColumn(identifier: "raise column")
raiseColumn?.width …
Run Code Online (Sandbox Code Playgroud)

nstableview nstablecolumn cocoa-bindings swift

6
推荐指数
1
解决办法
4802
查看次数

如何将数据绑定到NSDictionary的NSTableView?

有人知道如何使用NSDictionary的绑定值填充NSTableView吗?

提前致谢.

macos nstableview nstablecolumn

5
推荐指数
1
解决办法
4081
查看次数

跨多列的 NSTableVIew 标题

如何跨越一个多列的 NSTableView 标题,即我希望在一个标题下有两/三列。如图所示:

|.....Header......|
|..Col1..|..Col2..|
Run Code Online (Sandbox Code Playgroud)

我尝试在另一个顶部使用两个同步滚动视图。顶部滚动视图/表格视图没有标题。它只有一行,我使用- (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row委托将第一行标记为组行,并在其中填充额外的标题信息。在底部滚动视图/表格视图中,有所有数据列和标题。但它有以下限制:当我调整底部表格视图列的大小/重新排序时,上面的表格视图不会调整大小/重新排序。因此,在调整底部表格视图列的大小/重新排序后,两个表格视图看起来并不同步。

cocoa nstableview nstablecolumn nstableheaderview

5
推荐指数
0
解决办法
497
查看次数

问题命名NSTableColumn

我正在尝试使用空字符串作为标识符创建一个列,但每当我尝试创建列时,Cocoa似乎用"Field"替换空字符串.你怎么绕过这个?

- (void)addColumnWithCheckboxToTable:(NSTableView *)table
{
    // Add column with checkbox before all other columns
    // This column will have no title and should be as wide as the checkbox
    NSTableColumn *column = [[[NSTableColumn alloc] initWithIdentifier:@" "] autorelease];

    // The checkbox is to be initialised without a title
    NSButtonCell *checkbox = [[[NSButtonCell alloc] initTextCell:@" "] autorelease];
    [checkbox setEditable:YES];
    [checkbox setButtonType:NSSwitchButton];
    [checkbox setImagePosition:NSImageOnly];
    [checkbox setControlSize:NSSmallControlSize];

    // Add column with checkbox to table
    [column setDataCell:checkbox];

    // Add column to table
    [table addTableColumn:column];
}
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c nstableview nstablecolumn

4
推荐指数
1
解决办法
3054
查看次数

NSTableView可选但不可编辑

试图让IB中的NSTableView可选,但不可编辑.但是为列选择"可编辑"也会删除选择功能.

有人可以告诉我应该在哪里插入此代码以使其工作(不在app委托或窗口控制器中工作):

NSTextFieldCell *aCell = [tableColumn dataCell];
[aCell setEditable: NO];
[aCell setSelectable: YES];
Run Code Online (Sandbox Code Playgroud)

BTW该表由字典绑定更新,字典控制器设置为不可编辑.

cocoa nstableview nstablecolumn

4
推荐指数
1
解决办法
2956
查看次数

如何向 NSTableCellView 添加子类?

我将图像和文本表单元格视图添加到 IB 中的 NSTable。文本表格单元格视图中有一个 TextFiled 和一个 ImageView,所以我的代码如下所示:

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
    NSString *iden = [ tableColumn identifier ];
    if ([iden isEqualToString:@"MainCell"]) {
        NSTableCellView *cell = [ tableView makeViewWithIdentifier:@"MainCell11" owner:self ];
        [cell.textField setStringValue:@"123"];
        [cell.imageView setImage:[[NSImage alloc] initByReferencingFile:@"/Users/Pon/Pictures/17880.jpg"]];
        return cell;
    }
    return nil; 
}
Run Code Online (Sandbox Code Playgroud)

我发现textfield和imageView有默认的outlet,所以我可以使用cell.textFiled来访问这个textField对象并更改它的值。这是我的问题,如果我向此图像和文本表单元格视图添加一个额外的 TextField,一列中有两个 TextField,那么如何获取我添加的第二个 TextFiled,更改 TextFiled 的值?

macos cocoa nstableview nstablecolumn nstablecellview

4
推荐指数
1
解决办法
2768
查看次数